试图解析json C#

时间:2016-07-19 09:25:31

标签: c# json

我有以下json:

[
{
"value1": 2,
"value2": [
  12
],
"value3": 10,
"value4": [
  1,2
],
"value5": null,
"value6": 0,
"value7": 1,
"value8": 2,
"value9": 3,
"value10": [
  "4"
],
"value11": false,
"value12": false,
"value13": 0,
"value14": "text\n",
"value15": 2,
"value16": 0,
"value17": 3,
"value18": 2,
"value19": 2,
"value20": 0,
"value21": 5,
"value22": "10.1",
"value23": "O",
"value24": 3,
"value25": 5,
"value26": 0,
"value27": null,
"value28": false,
"value29": "Net",
"value32": 14,
"value33": [
  "F",
  "M"
],
"value34": 0
},
{
"value1": 2,
"value2": [
  42
],
"value3": 1,
"value4": [

],
"value5": null,
"value6": 0,
"value7": 1,
"value8": 146,
"value9": 350,
"value10": [
  "other"
],
"value11": false,
"value12": false,
"value13": 0,
"value14": "F\n",
"value15": 1,
"value16": 0,
"value17": 3,
"value18": 1,
"value19": 1,
"value20": 0,
"value21": 5361,
"value22": "10.1",
"value23": "O",
"value24": 2,
"value25": 0,
"value26": 0,
"value27": null,
"value28": false,
"value29": null,
"value30": null,
"value31": "Net",
"value32": 146,
"value33": [
  "F"
],
"value34": 0
 }
]

并通过Visual Studio过去特别为我构建以下类:

 public class Rootobject
{
    public Class1[] Property1 { get; set; }
}

public class Class1
{
    public int value1 { get; set; }
    public int[] value2 { get; set; }
    public int value3 { get; set; }
    public object[] value4 { get; set; }
    public object value5 { get; set; }
    public int value6 { get; set; }
    public int value7 { get; set; }
    public int value8 { get; set; }
    public int value9 { get; set; }
    public string[] value10 { get; set; }
    public bool value11 { get; set; }
    public bool value12 { get; set; }
    public int value13 { get; set; }
    public string value14 { get; set; }
    public int value15 { get; set; }
    public int value16 { get; set; }
    public int value17 { get; set; }
    public int value18 { get; set; }
    public int value19 { get; set; }
    public int value20 { get; set; }
    public int value21 { get; set; }
    public string value22 { get; set; }
    public string value23 { get; set; }
    public int value24 { get; set; }
    public int value25 { get; set; }
    public int value26 { get; set; }
    public object value27 { get; set; }
    public bool value28 { get; set; }
    public string value29 { get; set; }
    public int value32 { get; set; }
    public string[] value33 { get; set; }
    public int value34 { get; set; }
    public object value30 { get; set; }
    public string value31 { get; set; }
}

现在,我尝试使用以下代码反序列化json文本:

JavaScriptSerializer serializer = new JavaScriptSerializer();
Rootobject o= serializer.Deserialize<Rootobject>(objectString)

我得到以下例外:

  

输入&#39; MyProj.Rootobject&#39;不支持反序列化数组。

我的问题是什么?

4 个答案:

答案 0 :(得分:2)

尝试使用以下根对象类

 public class RootObject
{
    public int value1 { get; set; }
    public List<int> value2 { get; set; }
    public int value3 { get; set; }
    public List<object> value4 { get; set; }
    public object value5 { get; set; }
    public int value6 { get; set; }
    public int value7 { get; set; }
    public int value8 { get; set; }
    public int value9 { get; set; }
    public List<string> value10 { get; set; }
    public bool value11 { get; set; }
    public bool value12 { get; set; }
    public int value13 { get; set; }
    public string value14 { get; set; }
    public int value15 { get; set; }
    public int value16 { get; set; }
    public int value17 { get; set; }
    public int value18 { get; set; }
    public int value19 { get; set; }
    public int value20 { get; set; }
    public int value21 { get; set; }
    public string value22 { get; set; }
    public string value23 { get; set; }
    public int value24 { get; set; }
    public int value25 { get; set; }
    public int value26 { get; set; }
    public object value27 { get; set; }
    public bool value28 { get; set; }
    public string value29 { get; set; }
    public int value32 { get; set; }
    public List<string> value33 { get; set; }
    public int value34 { get; set; }
    public object value30 { get; set; }
    public string value31 { get; set; }
}

答案 1 :(得分:1)

试试这个

JavaScriptSerializer serializer = new JavaScriptSerializer();
var o= serializer.Deserialize<List<Rootobject>>(objectString)

答案 2 :(得分:1)

使用Newtonsoft.Json NuGet Package可以在不使用Rootobject的情况下反序列化json:

List<Class1> results = JsonConvert.DeserializeObject<IList<Class1>(objectString).ToList();

答案 3 :(得分:1)

首先创建类的对象然后尝试这个

Rootobject rootobject = new Rootobject();

    string json = new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(rootobject );