:より転載https://blog.csdn.net/tianyongheng/article/details/78989612
現在、統一解析JSONの接触いくつかあります
。もっと人気listjson(データとJSONオブジェクトは1でなければなりません)
2.現在の団結は(複雑なJSONを解決することはできません)JsonUtility来る
3.Newtonsoft.Json(勧告は複雑で解決することができますJSON、およびJSONフィールド柔軟なものを、必要としない)
(ダウンロード:HTTPS://github.com/SaladLab/Json.Net.Unity3D/releases)
多様化を提供JSONを解析するlistjsonも、jsonDataに分割することができますこれはJsonMapperからのデータ・オブジェクトによって定義されたモードに変換することができます。
それ以外の場合は解決に失敗し、listJsonは機能豊富な、しかし、1つのフィールドJSONをパースにJsonMapper、カスタムオブジェクトやフィールドでカスタムオブジェクトに変換する場合(フィールド内のJSONを、カスタムオブジェクトが持っている必要があります) 。
たとえば、次のように
jison:
1 列 JSON = "@ 2 { 3 "" D "": "" D ""、 4 ""アルバム"":{ 5 "" CC "": "" CC "" 6 ""名前"":" 「月のダークサイド」」、 7 『』アーティスト『』: 『』ピンク・フロイド『』、 8 『』年『』:1973、 9 『』トラック『』:[ 10 『『』私に話します』、 図11は、 ""、 "ブリーズ" 12 " "の実行時に""を 13 ]、 14 "" TT "": "" TT ""、 15 "" tracksOb "":[{ "" trackOb "": "" 11 ""}、{ "" trackOb "": "" 22 ""}]、 16 "" BB "": "" BB "" 17 } 18 } 19 」。
モッズJSONに対応しては、3い
OO、TestModel、TestModel2があります
1つの パブリック クラスOO 2 { 3 パブリック 文字列D。 4 公共TestModelアルバム。 5 公共の 文字列のBB。 6 } 7 8 パブリック クラスTestModel 9 { 10 公共 の文字列名。 11 公共の 文字列アーティスト。 12 公共 のint 年。 13 パブリック 文字列[]トラック。 14 公衆TestModel2 [] tracksOb。 15 } 16 17 パブリック クラスTestModel2 18 { 19、 公衆 ストリングtrackOb。 20 }
これらは解析されるべきであり、対応するカスタムJSONデータモデル
1の分析データlistJsonは、
1 解析方法 2 公共 静的 T GetData2 <T>(文字列テキスト)T:クラス3 { 4 // JsonDataテーブル= AnalysisJson.Analy <JsonData>(テキスト)。5 T T = JsonMapper.ToObject <T> (table.ToJson())。 6 7 // T T = JsonConvert.DeserializeObject <T>(テキスト)。 8 // T T = JsonUtility.FromJson <T>(テキスト)。9 リターントン。 10 }
1 OO O = GetData2 <OO>(JSON)。
JSON文字列は、多くのオブジェクトが含まれているため、与えられた、とされているフィールドの解像度を実行し
、データOO、TestModel、TestModel2オブジェクトではなく、すべてのJSON文字列フィールドと一から一、listjsonは非常に厳格な解決を。
2. Newtonsoft.Json
1 解析方法 2 公共 静的 T GetData2 <T>(文字列テキスト)T:クラス3 { 4 // JsonDataテーブル= AnalysisJson.Analy <JsonData>(テキスト)。 5 // T T = JsonMapper.ToObject <T>(table.ToJson())。6 7 T T = JsonConvert.DeserializeObject <T> (テキスト)。 8 // T T = JsonUtility.FromJson <T>(テキスト)。9 リターントン。 10 }
1 OO O = GetData2 <OO>(JSON)。
完全に解決、エラーなしで実行します。
3. JsonUtility来る団結を使用してください
1 解析方法 2 公共 静的 T GetData2 <T>(文字列テキスト)T:クラス3 { 4 // JsonDataテーブル= AnalysisJson.Analy <JsonData>(テキスト)。 5 // T T = JsonMapper.ToObject <T>(table.ToJson())。 6 7 // T T = JsonConvert.DeserializeObject <T>(テキスト)。8 T T = JsonUtility.FromJson <T> (テキスト)。 9 リターントン。 10 }
1 OO O = GetData2 <OO>(JSON)。
実行します。解決されていないいくつかのオブジェクトは、文句を言うでしょう