将字符串读取为 json
本文关键字:json 读取 字符串 | 更新日期: 2023-09-27 18:30:45
我想使用标准的.NET库,没有任何额外的引用。我在谷歌上搜索了一下,但没有找到任何可以使用的课程。
数据模型(属性)也基于配置文件,因此为对象创建类不是一个好主意,因为它只会使我的应用程序无法协调。
有什么建议吗?
我不确定是否有一种简单的方法可以仅使用框架类来做到这一点
不过,Json.Net 库(由Web API等使用)允许您非常轻松地执行此操作。有关示例,请参阅 http://www.newtonsoft.com/json/help/html/QueryingLINQtoJSON.htm。
JavaScriptSerializer 类具有用于在 JSON 对象和字符串之间进行转换的函数。也许你可以看看一些东西?
从 JSON.Net 库中获取源代码,将其添加到解决方案中,然后在项目中引用它。
https://github.com/JamesNK/Newtonsoft.Json/tree/master/Src/Newtonsoft.Json
您现在拥有了 JSON.Net 的所有功能,没有任何外部依赖项。
然后,当您厌倦了手动更新它时,请放宽"仅在框架中"规则并通过 Nuget 添加它,以便非常易于管理。
编辑:有两个内置的JSON序列化程序,但它们都以自己的特殊方式吸吮。
JavaScriptSerializer UTC DateTime 問題
JavaScriptSerializer和DataContractJsonSerializer充满了bug。请改用 json.net。甚至Microsoft在MVC4和其他最近的项目中也 ASP.Net 进行了这种切换。
你有没有从这里尝试过 SimpleJSON:http://wiki.unity3d.com/index.php/SimpleJSON?源代码的单页显示在该链接处。它在解析字符串方面做得很好。显然,它与 JSON.Net 无关。
System.Web.Extensions 的引用添加到项目中,则可以使用 JavaScriptSerializer
类将字符串反序列化为 json:
var json = new JavaScriptSerializer().Deserialize<MyType>(myString);
您也可以动态执行此操作,因此无需定义类型:
string myString = @"
{
""Hello"": 1,
""World"": ""FooBar""
}";
dynamic json = new JavaScriptSerializer().DeserializeObject(myString);
int hello = json["Hello"];
string world = json["World"];