首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >UWP C# -如何使用Windows.Data.Json将JsonObject反序列化为一个类?

UWP C# -如何使用Windows.Data.Json将JsonObject反序列化为一个类?
EN

Stack Overflow用户
提问于 2018-08-16 06:53:09
回答 2查看 849关注 0票数 1

我不想使用Newtonsoft的Json.Net库。如果我能在这个项目中有所帮助,我会避免任何第三方的依赖。

如果我有这样的JSON:

{
    "has_more_items": false,
    "items_html": "...",
    "min_position": "1029839231781429248"
}

我有一个看起来像这样的类:

public class TwitterJson
{
    bool hasMore { get; set; } // has_more_items
    string rawText { get; set; } // items_html
    string nextKey { get; set; } // min_position
}

我有一个包含上述JSON的JsonObject:

JsonObject theJson = JsonObject.Parse(result);

如何将JsonObject反序列化为我的类?我一直在努力寻找一个明确的例子,我找到的所有东西都使用Json.Net。

EN

回答 2

Stack Overflow用户

发布于 2018-08-16 07:17:57

你必须用[DataContract][DataMember]属性来装饰你的类。将json写入内存流并使用DataContractJsonSerializer进行反序列化

Here是一个更详细的示例。

除了@Nkosi的回答之外,下面是JSON.net与其他替代方案之间的一些比较:

票数 0
EN

Stack Overflow用户

发布于 2018-08-16 08:20:25

正如@Dimith所提到的,你需要用[DataContract][DateMember]来装饰你的类,请参考下面的代码将你的JSON转换成一个给定的对象。

 // Deserialize a JSON string to a given object.  
 public static T ReadToObject<T>(string json) where T: class, new()
 { 
    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
    using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(json)))
    {
       return ser.ReadObject(stream) as T;
    }
 }

类:

[DataContract]
    public class TwitterJson
    {
        [DataMember(Name = "has_more_items")]
        bool hasMore { get; set; } // has_more_items

        [DataMember(Name = "items_html")]
        string rawText { get; set; } // items_html

        [DataMember(Name = "min_position")]
        string nextKey { get; set; } // min_position
    }

如何使用的示例:

var result = "{\"has_more_items\": false, \"items_html\": \"...\",\"min_position\": \"1029839231781429248\"}";
var obj = ReadToObject<TwitterJson>(result);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51867509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档