C# 从JSON字符串到字典的简单解析器

C# 从JSON字符串到字典的简单解析器,c#,json,unity3d,localization,internationalization,C#,Json,Unity3d,Localization,Internationalization,我希望避免导入一个巨大的库来获得完整的JSON支持 我的用例非常简单:我需要一个解析器来处理JSON的一个特定情况,其中键和值都是字符串,即{“name”:“David”}。没有嵌套,没有数组,没有对象序列化 原因是,我只对i18n使用JSON,并且我的翻译文件的结构是平面JSON 手动滚动我自己的解析器是个好主意吗 已经有了吗 我的问题有更简单的解决办法吗 编辑:是的,我知道JSON.net是.net的实际解决方案,但它不是Unity的解决方案(不是本机的)。我真的只需要它的一小部分能量。

我希望避免导入一个巨大的库来获得完整的JSON支持

我的用例非常简单:我需要一个解析器来处理JSON的一个特定情况,其中键和值都是字符串,即
{“name”:“David”}
。没有嵌套,没有数组,没有对象序列化

原因是,我只对i18n使用JSON,并且我的翻译文件的结构是平面JSON

  • 手动滚动我自己的解析器是个好主意吗
  • 已经有了吗
  • 我的问题有更简单的解决办法吗
编辑:是的,我知道JSON.net是.net的实际解决方案,但它不是Unity的解决方案(不是本机的)。我真的只需要它的一小部分能量。

也许可以帮你

JsonValue.Parse()
方法解析JSON文本并返回一个类似

JsonValue value = JsonValue.Parse(@"{ ""name"": ""David"" }");
您还可以查看异步通信层内部使用的类,该类用于序列化和反序列化在浏览器和Web服务器之间传递的数据

var Names = new JavaScriptSerializer().Deserialize<YourNameClass>(json);
var name=new JavaScriptSerializer()。反序列化(json);
好的,我找到了

具有良好的测试、最少的功能,并且可能是针对我的特定用例设计的

要加载JSON文件,请执行以下操作:

Dictionary<string, object> locales = new Dictionary<string, object>();

TextAsset file = Resources.Load(name) as TextAsset;
var locale = file.text.FromJson<object>();
locales.Add(name, locale);
Dictionary locales=newdictionary();
TextAsset file=Resources.Load(name)作为TextAsset;
var locale=file.text.FromJson();
添加(名称、区域设置);
要使用JSON字典,请执行以下操作:

string activeLocale = "en-US";
var locale = locales[activeLocale] as Dictionary<string, object>;
var translation = locale[key] as string;
string activeLocale=“en-US”;
var locale=locales[activeLocale]作为字典;
var translation=locale[key]作为字符串;

非常简单。

注意:但我确实希望不需要为我的JSON对象编写类的灵活性,这就是为什么我选择Dictionary作为我想要的输出。可能是@bansi的重复。请指出哪个答案适用于我的问题?特别是知道JSON.net本身不支持Unity。@bansi这是一种重复,但并不准确,因为建议的答案是OP不想要的JSON.net。如果你想要
只需要它的一小部分功能,最好是手动滚动一个解析器。所有的通用解决方案都试图找到一个完整的解决方案。你是对的,JsonValue对于我的情况来说已经足够接近了,看看这个关于JsonValue更完整用法的问题:哦,等等,除了Unity没有System.Json命名空间,因为它是.Net 3.0-ish…是的,它是在4.5中引入的