【问题标题】:Trying to parse json C# [duplicate]试图解析 json C# [重复]
【发布时间】:2016-07-19 09:25:31
【问题描述】:

我有以下 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 Past special 为我构建以下课程:

 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)

我得到了以下异常:

类型“MyProj.Rootobject”不支持数组的反序列化。

我的问题是什么?

【问题讨论】:

    标签: c# json


    【解决方案1】:

    尝试使用以下根对象类

     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; }
    }
    

    【讨论】:

    • 它对我有用..谢谢!
    【解决方案2】:

    试试这个

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

    【讨论】:

    • 嗨,列表包含两个元素,但它们都是空的
    • 你能提供更多细节吗?
    • 我也不例外,但是列表元素是空的
    • @CSharpBeginner 尝试 Nikhil.Patel 回答
    • 结合两个答案..谢谢! :)
    【解决方案3】:

    您可以在没有Rootobject 的情况下使用 Newtonsoft.Json NuGet 包反序列化您的 json:

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 2016-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-10
        • 2016-02-24
        • 2017-01-09
        相关资源
        最近更新 更多