我想解析这个json字符串:
string downloadedString = "[ { \"type\" : 2, \"value\" : \"Las Terrenas\", \"label\" : \"Las Terrenas, (Dom. Republik Halbinsel Samana, Karibik)\", \"regionCode\" : \"KB\", \"zielCode\" : \"AZS\", \"ortCode\" : \"67\", \"giataCode\" : null, \"chainCode\" : null}, { \"type\" : 2, \"value\" : \"Las Caletillas\", \"label\" : \"Las Caletillas, (Teneriffa, Kanaren)\", \"regionCode\" : \"KA\", \"zielCode\" : \"TEN\", \"ortCode\" : \"830\", \"giataCode\" : null, \"chainCode\" : null}, { \"type\" : 2, \"value\" : \"Las Tricias\", \"label\" : \"Las Tricias, (La Palma, Kanaren)\", \"regionCode\" : \"KA\", \"zielCode\" : \"SPC\", \"ortCode\" : \"10034\", \"giataCode\" : null, \"chainCode\" : null}, { \"type\" : 2, \"value\" : \"Las Norias\", \"label\" : \"Las Norias, (La Palma, Kanaren)\", \"regionCode\" : \"KA\", \"zielCode\" : \"SPC\", \"ortCode\" : \"6179\", \"giataCode\" : null, \"chainCode\" : null}, { \"type\" : 2, \"value\" : \"Las Manchas\", \"label\" : \"Las Manchas, (La Palma, Kanaren)\", \"regionCode\" : \"KA\", \"zielCode\" : \"SPC\", \"ortCode\" : \"1061\", \"giataCode\" : null, \"chainCode\" : null} ]";
JObject json = JObject.Parse(downloadedString);
但是我得到一个错误,这是无效的json。
如果我改为通过lint json验证器运行字符串:http://jsonlint.com/ 然后结果是“有效的json”。当然,我必须在jsonlint上测试之前替换\“with”,因此我将使用的字符串会有所不同:
[{"type" : 2, "value" : "Las Terrenas", "label" : "Las Terrenas, (Dom. Republik Halbinsel Samana, Karibik)", "regionCode" : "KB", "zielCode" : "AZS", "ortCode" : "67", "giataCode" : null, "chainCode" : null}, { "type" : 2, "value" : "Las Caletillas", "label" : "Las Caletillas, (Teneriffa, Kanaren)", "regionCode" : "KA", "zielCode" : "TEN", "ortCode" : "830", "giataCode" : null, "chainCode" : null}, { "type" : 2, "value" : "Las Tricias", "label" : "Las Tricias, (La Palma, Kanaren)", "regionCode" : "KA", "zielCode" : "SPC", "ortCode" : "10034", "giataCode" : null, "chainCode" : null}, { "type" : 2, "value" : "Las Norias", "label" : "Las Norias, (La Palma, Kanaren)", "regionCode" : "KA", "zielCode" : "SPC", "ortCode" : "6179", "giataCode" : null, "chainCode" : null}, { "type" : 2, "value" : "Las Manchas", "label" : "Las Manchas, (La Palma, Kanaren)", "regionCode" : "KA", "zielCode" : "SPC", "ortCode" : "1061", "giataCode" : null, "chainCode" : null} ]
有人可以告诉我为什么上面的json代码在c#中不是有效的json吗?
答案 0 :(得分:4)
它是JSON数组,不是单个对象,因此应该以其他方式解析:
JArray json = JArray.Parse(downloadedString);
然后您可以将其元素作为json[i]
访问。
答案 1 :(得分:1)
为了便于访问反序列化对象,我建议你为JSON对象添加一个类,如下所示:
public class MyJsonObject
{
public string Type { get; set; }
public string Value { get; set; }
public string Label { get; set; }
public string RegionCode { get; set; }
public string ZielCode { get; set; }
public string OrtCode { get; set; }
public string GiataCode { get; set; }
public string ChainCode { get; set; }
}
然后,您可以使用以下命令来转换JSON字符串:
IList<MyJsonObject> json = JsonConvert.DeserializeObject<IList<MyJsonObject>>(downloadedString);