当前位置: 首页 > 面试题库 >

在没有第三方框架的情况下从HttpWebResponse反序列化JSON的方法

凌琦
2023-03-14
问题内容

我试图避免依赖开放源代码或第三方库(例如Json.NET)来解析来自HttpWebResponse的传入JSON。为什么?因为越依赖于开源框架来帮助实现,您的应用程序就越需要依赖于这些依赖…我不希望我的应用程序尽可能地依赖于很多库,这有很多原因。我可以使用诸如Enterprise
Library之类的东西,因为它受MS支持,但是我采用了更多的开源库。

无论如何,我正在尝试找出解析.NET 3.5中传入的JSON服务器端的最佳方法。

我知道这将得到很多响应,我什至使用.NET 3.5
JavaScriptSerializer将数据序列化为JSON,但是现在我试图找出最好的和最简单的方法来进行反向操作,而无需使用第三方/开源框架来帮助实现这一目标。


问题答案:

微软 推荐的 JSON序列化
DataContractJsonSerializer在内部存在这个类 System.Runtime.Serialization 总成

该示例演示了从JSON数据反序列化为对象。

MemoryStream stream1 = new MemoryStream();     
Person p2 = (Person)ser.ReadObject(stream1);

要将Person类型的实例序列化为JSON,请首先创建DataContractJsonSerializer,然后使用WriteObject方法将JSON数据写入流中。

Person p = new Person();
//Set up Person object...
MemoryStream stream1 = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Person));
ser.WriteObject(stream1, p);

更新: 添加了Helper类

这是一个示例帮助程序类,可用于简单的To / From Json序列化:

public static class JsonHelper
{
    public static string ToJson<T>(T instance)
    {
        var serializer = new DataContractJsonSerializer(typeof(T));
        using (var tempStream = new MemoryStream())
        {
            serializer.WriteObject(tempStream, instance);
            return Encoding.Default.GetString(tempStream.ToArray());
        }
    }

    public static T FromJson<T>(string json)
    {
        var serializer = new DataContractJsonSerializer(typeof(T));
        using (var tempStream = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
            return (T)serializer.ReadObject(tempStream);
        }
    }
}


 类似资料:
  • 我试图获取我的Web请求JSON输出并解析它。这是输出 我为这些结果创建了公共课程 当我尝试反序列化Record类并选择名称时,我从RootObject类获得名称。这是我的密码

  • 作为Joomla的一名新PHP开发人员,我一直在尝试在网页上创建表单。我找不到一个合适的来源可以轻松记录这些步骤。但经过大量搜索,我发现:http://www.ostraining.com/blog/how-tos/development/getting-started-with-jform/ 但是我不知道这些文件在我的主机上去了哪里。 有人能概述一下这些步骤吗。。。我不是在寻找完整的代码。就像:

  • 问题内容: 我刚刚开始使用Python,我想知道如何在不需要框架的情况下对Web应用程序进行编程。我是一位经验丰富的PHP开发人员,但是我有尝试Python的冲动,而且我通常喜欢从头开始编写,而没有受到flask和django等框架的限制。 问题答案: WSGI是Web服务器接口的Python标准。如果要创建自己的框架或在没有框架的情况下运行,则应进行研究。特别是,我发现Ian Bicking的D

  • 本文向大家介绍ASPNET中JSON的序列化和反序列化的方法,包括了ASPNET中JSON的序列化和反序列化的方法的使用技巧和注意事项,需要的朋友参考一下 一、JSON简介  JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式。 JSON是“名值对”的集合。结构由大括号'{}',中括号'[]',逗号',',冒号':',双引号'

  • 问题内容: 我在Go中创建了Direct3D9包装器,该包装器使用CGo与C中的COM对象进行接口。 我想摆脱Windows下对C编译器的依赖,因此用户不必安装MinGW或Cygwin即可使用Go中的DirectX。 问题在于d3d9.dll不会公开C函数,而是使用COM。加载DLL(带有)后,可以直接调用的唯一函数是。这将返回一个COM对象,该对象将所有功能公开为方法。 如何在没有CGo的纯Go

  • 序列化是RPC服务框架实现中重要的一环,因为RPC是远程调用,需要数据序列化后传输,接收后再反序列对象。 序列化库也有不同的性能,有些序列化框架会尽量压缩数据和数据类型,有些包含元数据信息,它们的性能表现不尽相同。 对于Go生态圈的序列化框架,有一些开源项目对它们的性能做了对比,比如 gosercomp做的性能比较: 可以看到XML、JSON相对于其它序列化方式性能挺差的,它们的好处在于通用性。比