首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WinRT中反序列化JSON?

如何在WinRT中反序列化JSON?
EN

Stack Overflow用户
提问于 2012-06-10 09:47:04
回答 3查看 14K关注 0票数 18

如何获取对象并将其转换为JSON字符串,然后从字符串返回该对象,特别是在Windows8Metro应用程序的WinRT中?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-10 09:47:04

如下所示:

using System.IO;
using System.Runtime.Serialization.Json;
using System.Text;

public static T Deserialize<T>(string json)
{
    var _Bytes = Encoding.Unicode.GetBytes(json);
    using (MemoryStream _Stream = new MemoryStream(_Bytes))
    {
        var _Serializer = new DataContractJsonSerializer(typeof(T));
        return (T)_Serializer.ReadObject(_Stream);
    }
}

public static string Serialize(object instance)
{
    using (MemoryStream _Stream = new MemoryStream())
    {
        var _Serializer = new DataContractJsonSerializer(instance.GetType());
        _Serializer.WriteObject(_Stream, instance);
        _Stream.Position = 0;
        using (StreamReader _Reader = new StreamReader(_Stream)) 
        { return _Reader.ReadToEnd(); }
    }
}
票数 38
EN

Stack Overflow用户

发布于 2012-09-09 01:10:33

首先使用http://json2csharp.com/生成C#类,然后使用http://james.newtonking.com/pages/json-net.aspx进行解析

我的user类目前看起来如下所示:

public class User
{
    public string id { get; set; }
    public string username { get; set; }
    public string full_name { get; set; }
    public string profile_picture { get; set; }
    public string bio { get; set; }
    public string website { get; set; }
    public Counts counts { get; set; }

    public static User SingleFromJSON(string jsonString)
    {
        return JsonConvert.DeserializeObject<SingleUser>(jsonString).data;
    }

    public static User MultipleFromJSON(string jsonString)
    {
        return JsonConvert.DeserializeObject<SingleUser>(jsonString).data;
    }

    private class SingleUser
    {
        public User data { get; set; }
    }

    private class MultipleUsers
    {
        public List<User> data { get; set; }
    }
}

public class Counts
{
    public int media { get; set; }
    public int follows { get; set; }
    public int followed_by { get; set; }
}

超级简单:D

票数 4
EN

Stack Overflow用户

发布于 2019-01-29 05:58:58

OP询问的答案与Windows8上的metro应用程序有关,但这个问题是在对WinRT的序列化/反序列化jsons进行基本搜索时出现的,所以我为那些正在寻找更现代方法的人添加了这个答案。

现代WinRT有内置的处理程序来应对这一挑战,因此不需要使用JSON.net

使用Windows.Data.Json中的JsonObject

对于序列化,请使用ParseTryParse

对于仍然是JSON格式的反序列化,可以使用Stringify

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10965829

复制
相关文章

相似问题

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