【问题标题】:Deserializing JSON in ASP.NET C#在 ASP.NET C# 中反序列化 JSON
【发布时间】:2011-08-04 01:57:21
【问题描述】:

我有以下 JSON:

{
  "recipe": {
    "rating": 19.1623, 
    "source_name": "Allrecipes", 
    "thumb": "http://img.punchfork.net/8f7e340c11de66216b5627966e355438_250x250.jpg", 
    "title": "Homemade Apple Crumble", 
    "source_url": "http://allrecipes.com/Recipe/Homemade-Apple-Crumble/Detail.aspx", 
    "pf_url": "http://punchfork.com/recipe/Homemade-Apple-Crumble-Allrecipes", 
    "published": "2005-09-22T13:00:00", 
    "shortcode": "z53PAv", 
    "source_img": "http://images.media-allrecipes.com/site/allrecipes/area/community/userphoto/big/173284.jpg"
  }
}

我正在尝试创建一个表示该数据的 C# 类(我暂时只对这三个属性感兴趣):

[Serializable]
[DataContract(Name = "recipe")]
public class Recipe
{
    [DataMember]
    public string thumb { get; set; }

    [DataMember]
    public string title { get; set; }

    [DataMember]
    public string source_url { get; set; }
}

我正在使用以下代码,但它没有按预期工作。 Recipe 的所有属性值都返回 null。有什么想法我在这里出错了吗?

DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Recipe));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(jsonString));
Recipe recipe = serializer.ReadObject(ms) as Recipe;

【问题讨论】:

    标签: c# asp.net json datacontractjsonserializer


    【解决方案1】:

    这里的问题是您想要的对象实际上是“recipes”参数的子对象。你的班级应该是:

    [DataContract]
    public class Result
    {
        [DataMember(Name = "recipe")]
        public Recipe Recipe { get; set; }
    }
    
    [DataContract]
    public class Recipe
    {
        [DataMember]
        public string thumb { get; set; }
    
        [DataMember]
        public string title { get; set; }
    
        [DataMember]
        public string source_url { get; set; }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多