我有像下面的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类型(例如,不是整数的基本类型,不是集合 类似于数组或List的类型,可以从JSON反序列化 宾语。 JsonObjectAttribute也可以添加到类型中以强制它 从JSON对象反序列化。\ r \ n路径'键',第1行,位置 7"}
我知道字符串格式不正确的json数组。这就是我如何获得字符串,我无法控制它。
将字符串传递到MyObject的IEnumerable
中最好的选择是什么。该字符串也可以有一个对象。
答案 0 :(得分:0)
Per James的回答(我确定你已经弄明白了,但现在是这样)。这应该只适用于1个对象:
string json = <your string here>;
json = "[" + json;
json = json.Replace("}{", "},{");
json += "]";
如果在json.net中有内置方法可以做到这一点,那么不确定。