我的JSON字符串是:
string b = "\"{\"Response\":[{\"ResponseCode\":\"0\",\"ResponseMessage\":\"71a88836-57f0-4b0e-a59c-071ea6d6f1de\"}]}\"";
我想检索ResponseCode
和ResponseMessage
的值。
当我尝试这样的方式来解析我的JSON字符串时
var userObj = JObject.Parse(b);
我遇到错误,例如:
Newtonsoft.Json.JsonReaderException
:“从JObject
读取JsonReader
时出错。当前JsonReader
项不是对象:String
。路径”,第1行,位置3。'
请帮助我从给定的字符串中检索ResponseCode
和ResponseMessage
。
答案 0 :(得分:4)
您需要修剪外部双引号,否则它不是有效的json格式
var userObj = JObject.Parse(b.Trim('"'));
然后,您可以通过声明与json格式匹配的类并反序列化来检索数据,也可以只动态访问属性
var response = (JArray)userObj["Response"];
string responseCode = response[0]["ResponseCode"].Value<string>();
string responseMessage = response[0]["ResponseMessage"].Value<string>();
答案 1 :(得分:0)
您应该使用create匹配所需属性的类。我认为您想要一个具有ResponseCode和ResponseMessage属性的Response-class。
在这种情况下,您应该删除外部的“ Response”标签。另外,应删除反斜杠,并将双引号替换为单引号。
尝试一下:
class Response
{
public string ResponseCode { get; set; }
public string ResponseMessage { get; set; }
}
static void Main(string[] args)
{
string body = @"{'ResponseCode':0,'ResponseMessage':'71a88836-57f0-4b0e-a59c-071ea6d6f1de'}";
var response = JsonConvert.DeserializeObject<Response>(body );
}