#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
}
}
}