解码包含 JSON 字符串的 JSON 字符串
Decode JSON string containing JSON string
我必须解码包含另一个 JSON 字符串的 JSON 字符串。目前我正在尝试使用 System.Web.Script.Serialization
中的 Serializator.Deserialize<Dictionary<string,string>>(value)
将其解码为 Dictionary<string,string>
,但没有成功。
这是字符串:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
这是我从解码器得到的格式错误:
(System.ArgumentException HResult=0x80070057 Message=Invalid object passed in, ':' or '}' expected. (34): {"label": "Side", "options": "[{"key": "left", "value": 0},{"key":"right", "value":1}]"} Source=System.Web.Extensions)
Which means he gets "[{" as a string and thus fails to convert of course...
有什么方法可以解码这个特定的 JSON 字符串并将其存储在对象中吗?客户对这种 JSON 格式非常具体...非常感谢
正如 Matt 在他的评论中提到的,您的 JSON 无效,而不是 "[{"key"
应该是 [{"key"
而不是 }]"}
应该是 }]}
.
像这样代表你的json
:
{
"label": "Side",
"options": "[{ 'key': 'left', 'value': '0'},{ 'key':'right', 'value':1}]"
}
在json里面用单引号
假设你有这两个 类 :
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);
P.S
这里使用 Newtonsoft
最后我使用的字符串格式如下:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
并将所有 JSON 存储在 Dictionary< string, object >
中。然后我将实现一种方法来解码 JSON 中的对象。
我必须解码包含另一个 JSON 字符串的 JSON 字符串。目前我正在尝试使用 System.Web.Script.Serialization
中的 Serializator.Deserialize<Dictionary<string,string>>(value)
将其解码为 Dictionary<string,string>
,但没有成功。
这是字符串:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
这是我从解码器得到的格式错误:
(System.ArgumentException HResult=0x80070057 Message=Invalid object passed in, ':' or '}' expected. (34): {"label": "Side", "options": "[{"key": "left", "value": 0},{"key":"right", "value":1}]"} Source=System.Web.Extensions) Which means he gets "[{" as a string and thus fails to convert of course...
有什么方法可以解码这个特定的 JSON 字符串并将其存储在对象中吗?客户对这种 JSON 格式非常具体...非常感谢
正如 Matt 在他的评论中提到的,您的 JSON 无效,而不是 "[{"key"
应该是 [{"key"
而不是 }]"}
应该是 }]}
.
像这样代表你的json
:
{
"label": "Side",
"options": "[{ 'key': 'left', 'value': '0'},{ 'key':'right', 'value':1}]"
}
在json里面用单引号
假设你有这两个 类 :
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);
P.S 这里使用 Newtonsoft
最后我使用的字符串格式如下:
{
"label": "Side",
"options": [
{
"key": "left",
"value": 0
},
{
"key": "right",
"value": 1
}
]
}
并将所有 JSON 存储在 Dictionary< string, object >
中。然后我将实现一种方法来解码 JSON 中的对象。