如果我有一个JSON属性,其中包含另一个JSON块的字符串,而不是实际的JSON,而是包含JSON的字符串,如何阻止反序列化尝试反序列化该字符串?
图A :我的带有JSON字符串的示例结构:
{
"name" : "parent",
"data" : "{
"name" : "child",
"data" : "foobar",
}",
}
图B :正常嵌套JSON的示例
{
"name" : "parent",
"data" :
{
"name" : "child",
"data" : "foobar",
},
}
因此,当我在 FIG A 中反序列化父对象时,我应该得到一个具有2个字符串属性的对象,一个名为'name',包含'parent',另一个名为'data',包含'{“name”:“child”,“data”:“foobar”}'
但是当我尝试这样做时,我得到错误。
以下是其尝试解析的确切 JSON :
"{ \"result\" : true, \"status\" : \"success\", \"data\" : \"{ \"id\" : 1, \"name\" : \"demo\", \"pixeldata\" : [{ \"time\" : \"1\", \"colour\" : \"#ff5357\"},{ \"time\" : \"2\", \"colour\" : \"#2424ff\"},{ \"time\" : \"3\", \"colour\" : \"#ff0d13\"},{ \"time\" : \"4\", \"colour\" : \"#f7ff4a\"},{ \"time\" : \"5\", \"colour\" : \"#fa24ff\"},{ \"time\" : \"6\", \"colour\" : \"#ff3e43\"}] }\" }"
以下是确切的错误消息:
"After parsing a value an unexpected character was encountered: i. Path 'data', line 1, position 54."
这是结构,它应该解析为:
public struct ServerResponse
{
public bool result;
public string status;
public string data;
}
public struct Display
{
public int id;
public string name;
public Data[] pixeldata;
}
public struct Data
{
public float time;
public string colour;
}
以下是导致异常的代码的确切行:
response = JsonConvert.DeserializeObject<API.ServerResponse>(_raw_response_data);
任何线索?
答案 0 :(得分:1)
根本原因在于您提供的字符串序列化作为示例(您说的那个&#39;它是它试图解析的确切JSON)
\"data\" : \"{ \"id\" : 1,
是:"data" : "{ "id" : 1
数据字符串中的内部双引号未被转义。
应该是
\"data\" : \"{ \\\"id\\\" : 1,
,即"data" : "{ \"id\" : 1