Parsing field name with a colon in JSON

前端 未结 2 2104
天命终不由人
天命终不由人 2020-12-04 00:41

How can we parse if json fields contains a colon(:)? Like this:

{
  \"dc:creator\":\"Jordan, Micheal\",
  \"element:publicationName\":\"Applied Ergonomics\"         


        
相关标签:
2条回答
  • 2020-12-04 01:01

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

    OR

    Console.WriteLine(JObject.Parse(json)["dc:creator"]);
    
    0 讨论(0)
  • 2020-12-04 01:02

    If you use DataContractJsonSerializer, DataMemberAttribute has property Name which can be used to override default name. This means that when you deserialize json value of property dc:creator is assigned to Publication::Creator property and on the contrary when you serialize C# object.

    For example:

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

    If you choose to use Json.Net, @L.B's answer is the way to go.

    0 讨论(0)
提交回复
热议问题