我有像下面这样的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对象(例如,{\”名称\“:\”值\})为'System.Collections.Generic.IEnumerable`1MyObject‘类型,因为该类型需要一个JSON数组(例如,1,2,3)反序列化。\r\n要修复此错误,可以将JSON更改为JSON数组(例如,1,2,3),或者将反序列化类型更改为正常的.NET类型(例如,不像整数这样的原始类型),而不是可以从JSON对象反序列化的集合类型(如数组或列表)。还可以将JsonObjectAttribute添加到类型中,以强制它从JSON对象反序列化。\r\nPath 'Key',第1行,位置7“}
我知道对于json数组,字符串没有很好的格式化。这就是我如何得到的字符串,我没有控制它。
在这里,将该字符串转换为IEnumerable of MyObject的最佳选择是什么。字符串也可以有一个对象。
发布于 2017-10-19 20:28:49
按照詹姆斯的回答(我相信你已经弄明白了,但就是这样)。这也应该只适用于一个对象:
string json = <your string here>;
json = "[" + json;
json = json.Replace("}{", "},{");
json += "]";不确定在json.net中是否有内置的方式来实现这一点。
https://stackoverflow.com/questions/46834941
复制相似问题