我必须解码一个包含另一个JSON字符串的JSON字符串。目前,我正在尝试使用Dictionary<string,string>
中的Serializator.Deserialize<Dictionary<string,string>>(value)
将其解码为System.Web.Script.Serialization
,但没有成功。
这是字符串:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
这是我从解码器得到的格式错误:
(System.ArgumentException HResult = 0x80070057 Message =传入了无效的对象,预期为':'或'}'。(34):{“ label”:“ Side”,“ options”:“ [{” key“: “ left”,“ value”:0},{“ key”:“ right”,“ value”:1}]“} Source = System.Web.Extensions) 这意味着他将“ [{”作为字符串获取,因此当然无法转换...
有什么办法可以解码此特定的JSON字符串并将其存储在对象中?客户端对此JSON格式非常具体...非常感谢
答案 0 :(得分:1)
这样代表您的json
:
{
"label": "Side",
"options": "[{ 'key': 'left', 'value': '0'},{ 'key':'right', 'value':1}]"
}
内部带有单引号的
让我们假设您有这两个类:
public class YourObject
{
public string label { get; set; }
public string options { get; set; }
}
public class InsideObject
{
public string key { get; set; }
public int value { get; set; }
}
所以您的json在键“ options” 下有另一个json作为字符串,您可以像这样提取它们两个:
string json = "{\"label\": \"Side\", \"options\": \"[{ 'key': 'left', 'value': '0'},{ 'key':'right', 'value':1}]\"}";
var jsonObj = JsonConvert.DeserializeObject<YourObject>(json);
var insideObj = JsonConvert.DeserializeObject<InsideObject>(jsonObj.options);
PS 在这里使用Newtonsoft
答案 1 :(得分:0)
最后,我使用如下字符串格式:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
并将所有 JSON 存储在Dictionary< string, object >
中。然后,我将实现一种方法来解码 JSON 中的对象。
答案 2 :(得分:-1)
正如Matt在评论中已经提到的那样,您的JSON无效,而不是"[{"key"
应该是[{"key"
,而不是}]"}
应该是}]}
。