3

我有一个问题,如果我的 json 文件看起来像这样

{“数字”:“45387”,“单词”:“空间桶”}

我可以很好地阅读它,但是如果它看起来像这样:

{ "Main" :{ "Numbers": "45387", "Words": "space buckets"},
"Something" :{"Numbers": "12345", "Words": "Kransky"} }

我没有得到任何信息。我不知道如何在 Main 和 Something 之间切换!使用此代码加载带有此“嵌套”信息的 JSON,

var ser = new DataContractJsonSerializer(typeof(myInfo));

var info = (myInfo)ser.ReadObject(e.Result); 

// 用来保存我的信息的类

[DataContract] 
public class myInfo 
{ 
    [DataMember(Name="Numbers")] 
    public int number 
    { get; set; } 

    [DataMember(Name="Words")] 
    public string words 
    { get; set; } 
} 

导致类返回空。
我尝试将组名添加到 DataContract,例如。[DataContract, Name="Main"] 但这仍然会导致类值为空。
我还尝试将“main”添加到序列化程序重载程序中,例如。var ser = new DataContractJsonSerializer(typeof(myInfo), "Main");
这会导致错误:从命名空间“”中期待元素“主”。遇到名称为“根”、命名空间“”的“元素”。
我宁愿只使用提供的 json 阅读器。我研究了 json.NET,但发现文档在编写 json 方面很繁重,而关于阅读的信息很少。当然,我在这里遗漏了一些简单的东西!

4

1 回答 1

5

您可以添加一个包装类:

[DataContract]
public class Wrapper
{
    [DataMember]
    public myInfo Main { get; set; }

    [DataMember]
    public myInfo Something { get; set; }
}

Now you could deserialize the JSON back to this wrapper class and use the two properties to access the values.

于 2010-12-18T10:14:15.780 回答