当前位置:   article > 正文

unity 常用的几种解析json方式_unity 解析数组json

unity 解析数组json

目前接触的unity 解析json 有几种:
1.比较流行的listjson(数据对象必须和json一对一)
2.目前unity自带 JsonUtility(不能解析复杂的json)
3.Newtonsoft.Json (推荐可以解析复杂的json,不需要和json字段一对一 ,灵活)
(下载地址:https://github.com/SaladLab/Json.Net.Unity3D/releases)

listjson 对json 解析提供多样化,可以解析成JsonData,也可以通过JsonMapper 转成自定义的mode数据对象。
listJson功能比较丰富,但是在通过JsonMapper转成自定的对象时,自定义对象的字段要和解析的json字段一对一(json里面的字段,自定义的对象一定要有),不然会解析失败。
例如:
jison:

string json = @"
          {
             ""d"":""d"",
            ""album"" : {    
             ""cc"":""cc"",          
              ""name""   : ""The Dark Side of the Moon"",
              ""artist"" : ""Pink Floyd"",
              ""year""   : 1973,         
              ""tracks"" : [
                ""Speak To Me"",
                ""Breathe"",
                ""On The Run""
              ],
              ""tt"":""tt"",
             ""tracksOb"":[{""trackOb"":""11""},{""trackOb"":""22""}],
             ""bb"":""bb""         
            }
          }
        ";
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

要对应Json 的mod有 3个
分别是 OO, TestModel,TestModel2

public class OO
{
    public string d;
    public TestModel album;
    public string bb;
}

public class TestModel
{
    public string name;
    public string artist;
    public int year;
    public string[] tracks;
    public TestModel2[] tracksOb;
}

public class TestModel2
{
    public string trackOb;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

以上是要解析的json 和 对应的自定义model数据
1.使用 listJson 解析数据

解析方法
 public static T GetData2<T>(string text) where T : class
    {
        //JsonData table = AnalysisJson.Analy<JsonData>(text);
         T t = JsonMapper.ToObject<T>(table.ToJson());

         //T t = JsonConvert.DeserializeObject<T>(text);
        //T t = JsonUtility.FromJson<T>(text);
        return t;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
OO o = GetData2<OO>(json);
  • 1

运行解析会报错,因为json字符串 包含了很多对象,和字段
而 数据 OO, TestModel,TestModel2对象,并没有全部和json字符串字段一 一对应,listjson解析很严谨。

2.使用 Newtonsoft.Json

解析方法
 public static T GetData2<T>(string text) where T : class
    {
        //JsonData table = AnalysisJson.Analy<JsonData>(text);
         //T t = JsonMapper.ToObject<T>(table.ToJson());

         T t = JsonConvert.DeserializeObject<T>(text);
        //T t = JsonUtility.FromJson<T>(text);
        return t;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
OO o = GetData2<OO>(json);
  • 1

运行不会报错,完全解析。

3.使用unity自带 JsonUtility

解析方法
 public static T GetData2<T>(string text) where T : class
    {
        //JsonData table = AnalysisJson.Analy<JsonData>(text);
         //T t = JsonMapper.ToObject<T>(table.ToJson());

        // T t = JsonConvert.DeserializeObject<T>(text);
        T t = JsonUtility.FromJson<T>(text);
        return t;
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
OO o = GetData2<OO>(json);
  • 1

运行。有的对象解析不出,会报错

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/123407?site
推荐阅读
相关标签
  

闽ICP备14008679号