如果有这样一串字符串:{"name":"mobileinput","data":"{\"msg\":\"READY\",\"id\":0}"}
直接使用如下解析流程,可能会抛出标题的异常
代码如下
static void Main(string[] args)
{
//J:\Test\json.txt 是包含这段字符串的txt文本
FileStream fs = File.Open(@"J:\Test\json.txt", FileMode.Open);
StreamReader reader = new StreamReader(fs);
string json = reader.ReadToEnd();
Console.WriteLine(json);
JsonData data = JsonMapper.ToObject(json);
JsonData response = data["data"];
string msg = response["msg"].ToString();
Console.WriteLine(msg);
}
那么异常则是
遇到这样的情况,百思不得其解。于是只能通过字符串的ToString()方法来解决了。
修改后的代码如下
static void Main(string[] args)
{
FileStream fs = File.Open(@"J:\Test\json.txt", FileMode.Open);
StreamReader reader = new StreamReader(fs);
string json = reader.ReadToEnd();
Console.WriteLine(json);
JsonData data = JsonMapper.ToObject(json);
//多一次转换为string的过程
string responseStr = data["data"].ToString();
//然后将这个string解析为json
JsonData response = JsonMapper.ToObject(responseStr);
string msg = response["msg"].ToString();
Console.WriteLine(msg);
}
这样运行的话,就能正确解析出msg的值为"READY"了。
不知道有没有人遇到过这样的BUG。。还是只有我一个人呢