使用JSON中的冒号解析字段名称

时间:2014-02-28 07:52:30

标签: c# .net json

如果json字段包含冒号(:),我们如何解析?像这样:

{
  "dc:creator":"Jordan, Micheal",
  "element:publicationName":"Applied Ergonomics",
  "element:issn":"2839749823"
}

事实上,我想知道如何使用像restsharp这样的库进行映射?

2 个答案:

答案 0 :(得分:15)

使用Json.Net

string json = @"{
            ""dc:creator"":""Jordan, Micheal"",
            ""element:publicationName"":""Applied Ergonomics"",
            ""element:issn"":""2839749823""
        }";

var pub = JsonConvert.DeserializeObject<Publication>(json);

public class Publication
{
    [JsonProperty("dc:creator")]
    public string creator { set; get; }
    [JsonProperty("element:publicationName")]
    public string publicationName { set; get; }
    [JsonProperty("element:issn")]
    public string issn { set; get; }
}

Console.WriteLine(JObject.Parse(json)["dc:creator"]);

答案 1 :(得分:3)

如果您使用DataContractJsonSerializer,则DataMemberAttribute具有属性Name,可用于覆盖默认名称。这意味着当您反序列化时,属性dc:creator的json值被赋值给Publication::Creator属性,相反,当您序列化C#对象时。

例如:

public class Publication
{
    [DataMember(Name="dc:creator")]
    public string Creator { set; get; }
    [DataMember(Name="element:publicationName")]
    public string PublicationName { set; get; }
    [DataMember(Name="element:issn")]
    public string Issn { set; get; }
}

如果您选择使用Json.Net,@ L.B的回答是可行的方法。