从JSON字符串到Dictionary的简单解析器

时间:2016-12-02 04:09:25

标签: c# json unity3d localization internationalization

我想避免导入一个庞大的库以获得完整的JSON支持。

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

原因是,我只为i18n使用JSON,而且我的翻译文件结构是扁平的JSON。

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

2 个答案:

答案 0 :(得分:2)

System.Json可能会帮到你。

JsonValue.Parse()方法解析JSON文本并返回JsonValue之类的

JsonValue value = JsonValue.Parse(@"{ ""name"": ""David"" }");

您还可以查看异步通信层内部使用的JavaScriptSerializer类,以序列化和反序列化在浏览器和Web服务器之间传递的数据。

var Names = new JavaScriptSerializer().Deserialize<YourNameClass>(json);

答案 1 :(得分:1)

好的,我发现了一个! https://github.com/zanders3/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);

使用JSON字典:

string activeLocale = "en-US";
var locale = locales[activeLocale] as Dictionary<string, object>;
var translation = locale[key] as string;

死了简单。