#if USE_JSON /* * [Function] * convert json string into dictionary object * [Input] * json string * [Output] * object, internally is dictionary * [Note] * 1.you should know the internal structure of the dictionary * then converted to specific type of yours */ public Object jsonToDict(string jsonStr) { JavaScriptSerializer jsonSerializer = new JavaScriptSerializer() { MaxJsonLength = int.MaxValue }; Object dictObj = jsonSerializer.DeserializeObject(jsonStr); return dictObj; } #endif
例 16.1. jsonToDict 的使用范例
string kibMasJson = ""; string colorImagesJson = ""; if (crl.extractSingleStr(@"window\.kibMAs\s*=\s*(\[.+?\])\s*;\s*window\.kibConfig\s*=", productHtml, out kibMasJson, RegexOptions.Singleline)) { //2. json to dict Object[] dictList = (Object[])crl.jsonToDict(kibMasJson); //3. get ["preplayImages"]["L"] imageUrlList = new string[dictList.Length]; crl.emptyStringArray(imageUrlList); for (int idx = 0; idx < dictList.Length; idx++) { Dictionary<string, Object> eachImgDict = (Dictionary<string, Object>)dictList[idx]; Object imgUrlObj = null; if (eachImgDict.ContainsKey("preplayImages")) { eachImgDict.TryGetValue("preplayImages", out imgUrlObj); } else if (eachImgDict.ContainsKey("imageUrls")) { eachImgDict.TryGetValue("imageUrls", out imgUrlObj); } if (imgUrlObj != null) { //"L" : "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KC/KC-slate-01-lg._V401028090_.jpg", //"S" : "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KC/KC-slate-01-sm._V401028090_.jpg" //"L" : "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KC/KC-slate-03-lg._V400694812_.jpg", //"S" : "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KC/KC-slate-03-sm._V400694812_.jpg", //"rich": { // src: "http://g-ecx.images-amazon.com/images/G/01/misc/untranslatable-image-id.jpg", // width: null, // height: null //} //Type curType = imgUrlObj.GetType(); Dictionary<string, Object> imgUrlDict = (Dictionary<string, Object>)imgUrlObj; Object largeImgUrObj = ""; if (imgUrlDict.TryGetValue("L", out largeImgUrObj)) { //[0] "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KT/KT-slate-01-lg._V395919237_.jpg" //[1] "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KT/KT-slate-02-lg._V389394532_.jpg" //[2] "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KT/KT-slate-03-lg._V389394535_.jpg" //[3] "http://g-ecx.images-amazon.com/images/G/01//kindle/dp/2012/KT/KT-slate-04-lg.jpg" //[4] "http://g-ecx.images-amazon.com/images/G/01/kindle/dp/2012/KT/KT-slate-05-lg._V389394532_.jpg" imageUrlList[idx] = largeImgUrObj.ToString(); } else { //something wrong //not get all pic } } else { //something wrong } } }