将json字符串反序列化为集合

时间:2017-10-19 16:46:12

标签: javascript asp.net json json.net

我有像下面的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中最好的选择是什么。该字符串也可以有一个对象。

1 个答案:

答案 0 :(得分:0)

Per James的回答(我确定你已经弄明白了,但现在是这样)。这应该只适用于1个对象:

string json = <your string here>;
json = "[" + json;
json = json.Replace("}{", "},{");
json += "]";

如果在json.net中有内置方法可以做到这一点,那么不确定。