如何解析这个json
string jsonText = "{\"result\":\"success\",\"return\":{\"high\":{\"value\":\"46.50000\",\"value_int\":\"4650000\",\"display\":\"$46.50000\",\"display_short\":\"$46.50\",\"currency\":\"USD\"}}}";
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> json = (Dictionary<string, object>)serializer.DeserializeObject(jsonText);
[解决办法]
下一个 Newtonsoft.Json.dll 试试,很好用
[解决办法]
{
"result": "success",
"return": {
"high": {
"value": "46.50000",
"value_int": "4650000",
"display": "$46.50000",
"display_short": "$46.50",
"currency": "USD"
}
}
}
格式化之后是这样的
构建下面的一个CLASS
class Info{
public string value{get;set;}
public string value_int{get;set;}
public string display{get;set;}
public string display_short{get;set;}
public string currency{get;set;}
}
然后用这种类型去解析
Dictionary<string,Dictionary<string,Info>>
试试看 行不
[解决办法]
貌似 不行 下班了 LZ朝着这种构造 格式 试试看 可能有点复杂,要多建几个实体类 不过应该是可以构造出来的
[解决办法]
1楼已经回答了
[解决办法]
public string FromJson(string json)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> jsons = (Dictionary<string, object>)serializer.DeserializeObject(json);
object value1;
object sucess;
string value1;
if (jsons.TryGetValue("result", out sucess))//第一层
{
foreach (KeyValuePair<string, object> pair in jsons)//通过KeyValuePair
{
Dictionary<string, object> jsontemple = (Dictionary<string, object>)pair.Value;//第二层
jsontemple.TryGetValue("high", out value1);
//Response.Write(value1);
}
}
else
{
result = "失败了";
}
return result;
}
[解决办法]
你这好像有三层,以此类推就好了
[解决办法]
该引用的都引用了吗 using ......
第一层能取到吗? result的值
[解决办法]
serializer.DeserializeObject(jsonText);这个解析出来的东西,你可以用两个类做标识啊,第一个类就是大节点的,第二个就是二级节点的,然后获取属性值就OK了。LZ试试
[解决办法]
貌似已经有了类似的帖子了,我也回过了
[解决办法]
改好了
public string FromJson(string json)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
Dictionary<string, object> jsons = (Dictionary<string, object>)serializer.DeserializeObject(json);
object value1;
object value2;
object sucess;
string result="";
if (jsons.TryGetValue("return", out sucess))
{
//Response.Write();
Dictionary<string, object> jsontemple = (Dictionary<string, object>)sucess;
jsontemple.TryGetValue("high", out value1);
foreach (KeyValuePair<string, object> pair2 in jsontemple)
{
Dictionary<string, object> jsontemple2 = (Dictionary<string, object>)pair2.Value;
jsontemple2.TryGetValue("value", out value1);
jsontemple2.TryGetValue("value_int", out value2);
Response.Write(value1+"__"+value2);
}
}
else
{
result = "";
}
return result;
}
测试的是你前两个值