【问题标题】:deserializing an specific json string反序列化特定的 json 字符串
【发布时间】:2014-07-15 12:24:50
【问题描述】:

我无法反序列化以下 json 字符串,因为根元素没有键名。只是一个数值。我使用 Json.Net

{"41":{"entity_id":"41","status":"pending"},"42":{"entity_id":"42","status":"canceled"}}

这是来自 Magento REST Api 的响应。 我可以得到 xml 的响应,但我也不能使用 xml 响应反序列化。在两个不同的子元素中有两个 date_item 节点。

【问题讨论】:

标签: c# json json.net


【解决方案1】:

您可以使用一些属性来帮助反序列化。例如:

[DataContract]
public class YourClass
{
    [DataMember(Name = "41")]
    public YourEntity Property41
    {
        get;
        set;
    }
}

[DataContract]    
public class Entity 
{
   [DataMember(Name = "entity_id")]
   public int EntityID { get; set; }

}

这些属性适用于默认序列化程序:

    public static T DeserializeJson<T>(string objectInJson)
    {
        DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
        return (T)serializer.ReadObject(JsonSerializer.StringToStream(objectInJson));
    }

您可以使用 DeserializeJson(jsonString) 调用它

【讨论】:

  • 这不是一个好的解决方案。数字键代表一个 ID,它会有所不同。正确的解决方案是使用字典。请参阅 cmets 中链接的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-22
  • 2023-03-23
  • 2021-09-02
  • 2013-07-16
  • 1970-01-01
相关资源
最近更新 更多