如何使用Json的DataContractJsonSerializer

本文关键字:DataContractJsonSerializer Json 何使用 | 更新日期: 2023-09-27 18:00:11

我有这样的json结构:

{
   "id":"12345",
   "first_name": "dino",
   "last_name": "he",
   "emails": {
      "preferred": "1",
      "personal": "2",
      "business": "3",
      "other": "4"
   }
}

我想在电子邮件中获得价值所以我写了两个类:

[DataContract]
public class UserInformation
{
    [DataMember(Name = "id")]
    public string ID { get; set; }
    [DataMember(Name = "emails")]
    public Emails emails { get; set; }
    [DataMember(Name = "last_name")]
    public string Name { get; set; }
}
[DataContract]
public class Emails
{
    [DataMember(Name = "preferred")]
    public string Preferred { get; set; }

    [DataMember(Name = "personal")]
    public string Account { get; set; }
    [DataMember(Name = "business")]
    public string Personal { get; set; }
    [DataMember(Name = "other")]
    public string Business { get; set; }
}

而且我写的代码是这样的:

StreamReader stream = new StreamReader(@"C:'Visual Studio 2012'Projects'ASP.net'WebApplication1'WebApplication2'TextFile1.txt");
string text = stream.ReadToEnd();
stream.Close();
byte[] byteArray = Encoding.UTF8.GetBytes(text);
MemoryStream stream1 = new MemoryStream(byteArray);

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInformation));
var info = serializer.ReadObject(stream1) as UserInformation;
stream1.Close();

对于信息,我可以在UserInformation中获得其他值,但对于电子邮件,我什么都得不到。为什么,我应该如何写这堂课?请帮帮我!

如何使用Json的DataContractJsonSerializer

我发现问题是我需要将电子邮件中的所有属性更改为小写。。。我不知道为什么。。但它奏效了。

对象属性的大小写必须与JSON中的大小写匹配。(请参见下面的粗体)。

public Emails **emails** { get; set; }
{ "id":"12345", "first_name": "dino", "last_name": "he", "**emails**": { "preferred": "1", "personal": "2", "business": "3", "other": "4" }

或者您可以像对DataMember:那样将Name添加到DataContract属性中

[DataContract (Name="emails")]
public class Emails
{
相关文章:
  • 没有找到相关文章