我有如下的json字符串
"{"Key":3296,"Value1":"Test1","Value2":"City","Value3":"TX","Value4":null,"Value5":null,"Value6":null}{"Key":3297,"Value1":"Test2","Value2":"PUD","Value3":"TX","Value4":null,"Value5":null,"Value6":null}"
以及相应的C#类
public class MyObject
{
public int Key { get; set; }
public string Value1 { get; set; }
public string Value2 { get; set; }
public string Value3 { get; set; }
public string Value4 { get; set; }
public string Value5 { get; set; }
public string Value6 { get; set; }
}
当我尝试使用Newtonsoft反序列化此字符串时,我得到错误
{"无法反序列化当前JSON对象(例如。{\"name \":\"value \"})转换为类型'System.Collections.Generic.IEnumerable `1[MyObject]'因为该类型需要JSON数组(例如[1,2,3])来反序列化正确地\\r\n若要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,使其为正常类型.NET类型(例如,不是像integer这样的基元类型,也不是集合类型类似于数组或列表),可以从JSON反序列化对象JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。\\r\n路径'Key',第1行,位置7.">
我知道json数组的字符串格式不好。这就是我获取字符串的方式,我无法控制它。
这里最好的选择是将该字符串转换为MyObject的IEnumerable
。字符串也可以有一个对象。
Per James的回答(我相信你已经明白了,但现在是)。这也应该只适用于一个对象:
string json = <your string here>;
json = "[" + json;
json = json.Replace("}{", "},{");
json += "]";
不确定是否有内置的方法在json.net.中做到这一点