LitJson github:  传送门

  JsonUtility创建和解析Json  传送门

  LitJson.dll百度云盘  传送门  密码:p1py  

  

  加载LitJson.dll到Unity中

  在Assets文件夹下创建一个Plugins文件(文件名不得有错),把LitJson.dll放进去

  新建一个LitJson_Gary.cs脚本,挂在到GameObject上

第一种使用LitJson创建和解析Json

  好处:逻辑清晰,适用于稍微复杂的Json类型,适用于层级复杂情况

  坏处:需要单独写类,写的代码稍微多一些

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using LitJson;
  5.  
  6. public class Hero
  7. {
  8. public string name;
  9. public int power;
  10. }
  11.  
  12. public class Heros
  13. {
  14. public Hero[] heros;
  15. }
  16.  
  17. public class LitJson_Gary : MonoBehaviour {
  18.  
  19. // Use this for initialization
  20. void Start () {
  21. func1();
  22. }
  23.  
  24. void func1()
  25. {
  26. //创建Json
  27. //{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}
  28.  
  29. Hero hero1 = new Hero();
  30. hero1.name = "Gary";
  31. hero1.power = ;
  32. Hero hero2 = new Hero();
  33. hero2.name = "Gary2";
  34. hero2.power = ;
  35.  
  36. Heros heros = new Heros();
  37. heros.heros = new Hero[] {hero1,hero2};
  38.  
  39. string jsonStr = JsonMapper.ToJson(heros);
  40. Debug.Log(jsonStr);
  41.  
  42. //解析Json
  43. Heros newHeros = JsonMapper.ToObject<Heros>(jsonStr);
  44. Debug.Log(newHeros.heros[].name);
  45.  
  46. }
  47. }

LitJson_Gary.cs

  创建Json类型

  1. public class Hero
  2. {
  3. public string name;
  4. public int power;
  5. }
  6.  
  7. public class Heros
  8. {
  9. public Hero[] heros;
  10. }

  创建Json数据

  {'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}

  1. Hero hero1 = new Hero();
  2. hero1.name = "Gary";
  3. hero1.power = ;
  4. Hero hero2 = new Hero();
  5. hero2.name = "Gary2";
  6. hero2.power = ;
  7.  
  8. Heros heros = new Heros();
  9. heros.heros = new Hero[] {hero1,hero2};
  10.  
  11. string jsonStr = JsonMapper.ToJson(heros);
  12. Debug.Log(jsonStr);

  解析Json

  1. Heros newHeros = JsonMapper.ToObject<Heros>(jsonStr);
  2. Debug.Log(newHeros.heros[].name);

第二种使用LitJson创建和解析Json

  好处:代码简单,适用于层级简单情况

  坏处:当层级比较复杂的时候,比较容易出错

  创建Json

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using LitJson;
  5.  
  6. public class Hero
  7. {
  8. public string name;
  9. public int power;
  10. }
  11.  
  12. public class Heros
  13. {
  14. public Hero[] heros;
  15. }
  16.  
  17. public class LitJson_Gary : MonoBehaviour {
  18.  
  19. // Use this for initialization
  20. void Start () {
  21. fun2();
  22. }
  23.  
  24. void fun2()
  25. {
  26. //创建Json
  27. //简单类型:{'name':'Gary','power':90}
  28. JsonData demo = new JsonData();
  29. //demo.SetJsonType(JsonType.Object);
  30. demo["name"] = "Gary";
  31. demo["power"] = ;
  32. Debug.Log(demo.ToJson());
  33.  
  34. //复杂类型:{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}
  35. JsonData demos = new JsonData(); //{}
  36. JsonData demo1 = new JsonData();
  37. demo1["name"] = "Gary1";
  38. demo1["power"] = ;
  39. JsonData demo2 = new JsonData();
  40. demo2["name"] = "Gary2";
  41. demo2["power"] = ;
  42.  
  43. demos.SetJsonType(JsonType.Array);
  44. demos.Add(demo1);
  45. demos.Add(demo2);
  46.  
  47. Debug.Log(demos.ToJson());
  48.  
  49. }
  50.  
  51. void fun3()
  52. {
  53. string jsonStr = "{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}";
  54. JsonData demos = JsonMapper.ToObject(jsonStr);
  55. JsonData heros = demos["heros"]; //[]
  56. //heros[1]["name"]
  57. foreach(JsonData heroJd in heros)
  58. {
  59. Debug.Log(heroJd["name"].ToString());
  60. Debug.Log((int)heroJd["power"]);
  61. }
  62.  
  63. }
  64.  
  65. }

LitJson_Gary.cs

  解析Json

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using LitJson;
  5.  
  6. public class Hero
  7. {
  8. public string name;
  9. public int power;
  10. }
  11.  
  12. public class Heros
  13. {
  14. public Hero[] heros;
  15. }
  16.  
  17. public class LitJson_Gary : MonoBehaviour {
  18.  
  19. // Use this for initialization
  20. void Start () {
  21. fun3();
  22. }
  23.  
  24. //解析Json
  25. void fun3()
  26. {
  27. string jsonStr = "{'heros':[{'name':'Gary','power':90},{'name':'Gary2','power':80}]}";
  28. JsonData demos = JsonMapper.ToObject(jsonStr);
  29. JsonData heros = demos["heros"]; //[]
  30. //heros[1]["name"]
  31. foreach(JsonData heroJd in heros)
  32. {
  33. Debug.Log(heroJd["name"].ToString());
  34. Debug.Log((int)heroJd["power"]);
  35. }
  36.  
  37. }
  38.  
  39. }

LitJson_Gary.cs

Unity3D_(数据)LitJson创建和解析Json的更多相关文章

  1. Unity3D_(数据)JsonUtility创建和解析Json

    Json 百度百科:传送门 LitJson创建和解析Json 传送门 Json数据解析在Unity3d中的应用 传送门 一.使用JsonUnity创建Json using System.Collect ...

  2. Java创建和解析Json数据方法(三)——json-lib包的使用

    (三)json-lib包的使用         这篇笔记主要介绍json-lib包的创建和解析json数据的方式,主要是的JSONObject.JSONArray和Java对象:beans, maps ...

  3. Java创建和解析Json数据方法(四)——json-lib包的使用

    (四)json-lib包的使用         既然json-lib包比org.json包重量级,那么json-lib包肯定有很多org.json包没有的类和方法,这篇笔记简单记录json-lib包中 ...

  4. Java创建和解析Json数据方法(二)——org.json包的使用

    (二)org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookie ...

  5. Java创建和解析Json数据方法——org.json包的使用(转)

    org.json包的使用 1.简介   工具包org.json.jar,是一个轻量级的,JAVA下的json构造和解析工具包,它还包含JSON与XML, HTTP headers, Cookies, ...

  6. Java创建和解析Json数据方法(五)——Google Gson包的使用

    (五)Google Gson包的使用 1.简介 Gson包中,使用最多的是Gson类的toJson()和fromJson()方法:         ①toJson():将java对象转化为json数据 ...

  7. C语言创建及解析Json的使用法则

    参考原文:http://blog.csdn.net/xukai871105/article/details/33013455 JSON(JavaScriptObject Notation)是一种轻量级 ...

  8. iOS 使用SBJSON创建和解析JSON

    原文地址:http://blog.csdn.net/gf771115/article/details/7718403 //创建JSON NSDictionary *dictonary = [[NSMu ...

  9. java创建和解析json对象

    最近工作遇到了 json 解析的相关需求,整理下 JSONObject 相关操作. 文中使用的例子都是基于阿里巴巴的产品 FastJSON ,涉及到的包有: import com.alibaba.fa ...

随机推荐

  1. 使用Visual Studio 2019--调试汇编32位代码的详细步骤

    声明:本文使用32位masm,代码与16位,64位不同 ------------------------------------------------------------------------ ...

  2. p24 map 之 golang基础

    Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. 参考文档 https://www.liwenzhou.com/posts/Go/08_map/ package main im ...

  3. 06: zabbix常见面试题

    1.1 zabbix架构 1.zabbix理论 1)Zabbix是一个企业级的.开源的.分布式的监控套件,Zabbix可以监控网络和服务的监控状况. 2)Zabbix利用灵活的告警机制,允许用户对事件 ...

  4. mysql索引失效的情况

    1.WHERE字句的查询条件里有不等于号(如:WHERE column!=...),MYSQL将无法使用索引: 2.WHERE字句的查询条件里使用了函数的列(如:WHERE DAY(column)=. ...

  5. @Resource与@Autowired注解的区别踩坑者入

    一.写本博文的原因 有些童鞋搞不为什么要用@Resource或者@Autowired,咱们一起研究下 @Resource默认按照名称方式进行bean匹配,@Autowired默认按照类型方式进行bea ...

  6. zookeeperAPI的常用方法

    zookeeper支持三种部署方式: 1 单机 2 集群 3 伪集群 删除节点 zkClient.delete(path);

  7. 剑指offer-孩子们的游戏(圆圈中最后剩下的数)-知识迁移能力-python

    题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此.HF作为牛客的资深元老,自然也准备了一些小游戏.其中,有个游戏是这样的:首先,让小朋友们围成一个大圈.然后,他随机指 ...

  8. try catch和finally

    在C#中这三个关键字用于处理异常. 这三个关键字try是必定要用的,要不然就失去了意义.然后catch和finally可以不用但是要注意遵循原则. 存在一个或多个catch的时可以不用finally, ...

  9. O009、KVM 网络虚拟化基础

    参考https://www.cnblogs.com/CloudMan6/p/5289590.html   网络虚拟化是虚拟化技术中最复杂的部分,学习难度最大.   但因为网络是虚拟化中非常重要的资源, ...

  10. java实现spark常用算子之map

    import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.a ...