2016-12-02 13 views
1

完全なJSONサポートを得るために巨大なライブラリをインポートしないようにしたいと思います。JSON文字列からDictionaryへの単純なパーサー

私のユースケースは本当に簡単です。JSONの特定のケースを扱うパーサが必要です。キーと値の両方が文字列です。 { "name": "David" }。ネストも配列も、オブジェクトの直列化もありません。

私はJSONをi18nにのみ使用しています。私は翻訳ファイルをフラットJSONに構造化しています。

  • 私のパーサーを手渡すのは良い考えですか?
  • すでに1つはありますか?
  • 問題が簡単に解決する方法はありますか?

編集:はい、私は知っているJSON.netは、.NETのためのデファクトソリューションですが、それはUnityのための解決策ではありません(ネイティブではありません)。私は本当にその力のごく一部しか必要としません。

+0

注:JSONオブジェクトのクラスを作成する必要がないという柔軟性が必要なので、希望の出力として辞書を選択しています。 – bitinn

+0

[単純な辞書にJSONを逆シリアル化するにはどうすればいいですか?ASP.NETの文字列| string?](https://stackoverflow.com/questions/1207731/how-can-i-deserialize-json-to-シンプルな辞書の文字列の文字列で - aspの - ネット) – bansi

+0

@バンジーあなたは私の質問にどの答えが適用されることを指摘できますか?特にJSON.netがUnityをネイティブにサポートしていないことを知っています。 – bitinn

答えて

1

OK私は1つを見つけました!

デリーテスト、最小限の機能を備えており、特定の使用目的に合うよう設計されている可能性があります。

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

デッドシンプル: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ファイルをロードするために

2

System.Jsonあなたのためにトリックを行う可能性があります。

JsonValue.Parse()方法は、JSONテキストを解析し、あなたはまた、非同期通信層によって内部的に使用されJavaScriptSerializerクラスで見ることができJsonValue

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

のように間で渡されるデータをシリアライズし、デシリアライズに戻り、ブラウザとWebサーバー。

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

あなたはそうです、JsonValueは私の場合は、JsonValueのより完全な使用法については、このような質問を参照してください:http:// stackoverflow。com/questions/9573119/how-to-parse-json-without-json-net-library – bitinn

+0

UnityがSystem.Json名前空間を持たないことを除いて、待ってください.Net 3.0-ish ... – bitinn

+0

4.5に導入 –

関連する問題