【Unity】JsonUtility解析集合(collections)类型(List)
Unity自带的Json解析工具类JsonUtility居然没有API用于解析集合类型,也太鬼扯了吧。
- https://stackoverflow.com/questions/36239705/serialize-and-deserialize-json-and-json-array-in-unity
- http://www.boxheadproductions.com.au/deserializing-top-level-arrays-in-json-with-unity/
下面是一个简单的例子:
Student.json:是一个数组。
[
{
"id": "",
"name": "A"
},
{
"id": "",
"name": "B"
}
]
解析Json:
// 解析Json的方法
public void ParseItemJson(string jsonStr)
{
// 将Json中的数组用一个list包裹起来,变成一个Wrapper对象
jsonStr = "{ \"list\": " + jsonStr + "}";
Response<Student> studentList = JsonUtility.FromJson<Response<Student>>(jsonStr);
foreach (Student item in studentList.list)
{
Debug.Log(item.id);
}
} // Json解析为该对象
public class Response<T>
{
public List<T> list;
} [Serializable]
public class Student
{
public int id;
public string name;
}
坑点:
- Student类中的属性要与Json中的属性一致,大小写敏感!否则能解析为对象,但对象的属性为默认值(int默认0,string默认null等)。
- Student类要标记为[Serializable],Response类可以不用标记。
- Json前面拼接的 \"list\"必须要和Response中的list属性一致,大小写敏感!
根据上面的第三个坑点,对于这种包含数组/集合的数据,后台最好不是直接返回一个数组,而是返回一个对象,对象内部包含一个数组。数据格式如下:
{
"list": [
{
"id": "1",
"name": "A"
},
{
"id": "2",
"name": "B"
}
]
}
JsonUtility用着实在蛋疼,还是换回熟悉的Newtonsoft.json吧。
- https://www.newtonsoft.com/json
- http://www.cnblogs.com/guxin/p/csharp-parse-json-by-newtonsoft-json-net.html
由于Unity使用的.Net Framwork版本太低,直接Nuget下载的Newtonsoft.json是不能安装的。报错如下图:

解决办法:
- http://blog.csdn.net/beihuanlihe130/article/details/53676006
- http://www.xuanyusong.com/archives/4367
【Unity】JsonUtility解析集合(collections)类型(List)的更多相关文章
- python基础——数字&集合&布尔类型
Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...
- .NET面试题解析(01)-值类型与引用类型
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还 ...
- Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构
Backbone.js 为复杂Javascript应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和 自定义事件:集合附有可枚举函数 ...
- Java集合——Collections工具类
Java集合——Collections工具类 摘要:本文主要学习了Collections工具类的常用方法. 概述 Collections工具类主要用来操作集合类,比如List和Set. 常用操作 排序 ...
- java基础小练习,1-打印一百次(1~10)的随机数,2-固定一个随机数(1~100),然后猜出他,3-定义以指定格式打印集合(ArrayList类型作为参数),使用{}括起来,使用@代替,分隔每个元素
推荐自己码一下,可以使用别的方法,面向对象,不需要注重过程 /* 题目:我需要打印一百次(1~10)的随机数 */ import java.util.Random; public class demo ...
- Unity Json解析IPA
今天看到一个unity 自带的解析json的IPA,感觉比litjson好用很多,废话不多,上代码 using System.Collections; using System.Collections ...
- Unity -JsonUtility的使用
今天,为大家分享一下unity上的Json序列化,应该一说到这个词语,我们肯定会觉得,这应该是很常用的一个功能点:诚然,我们保存数据的时候,也许会用到json序列化,所以,我们有必要快速了解一下它的简 ...
- Guava 3: 集合Collections
一.引子 Guava 对JDK集合的拓展,是最成熟且最受欢迎的部分.本文属于Guava的核心,需要仔细看. 二.Guava 集合 2.1 Immutable Collections不可变集合 1.作用 ...
- Unity API 解析 (陈泉宏著)
1 Application类 2 Camera类 3 GameObject类 4 HideFlags类 5 Mathf类 6 Matrix4x4类 7 Object类 8 Quaternion类 9 ...
随机推荐
- [转]iptables 命令介绍
iptables防火墙可以用于创建过滤(filter)与NAT规则.所有Linux发行版都能使用iptables,因此理解如何配置iptables将会帮助你更有效地管理Linux防火墙.如果你是第一次 ...
- maven pom文件简单模板和配置详解
https://blog.csdn.net/earbao/article/details/49924943 maven pom文件简单模板和配置详解
- nodejs 最受欢迎的orm sequelize
传送门 # 视频教程 https://nodelover.me/course/sequelize/ # 官方文档 http://docs.sequelizejs.com/manual/tutorial ...
- office2010激活 错误代码0X8007000D,KMS激活0x8007000D错误解决办法,亲测成功激活
只针对VL版本 注意:此方法只对VL版本的,或者是MSDN版本通过替换文件转为VL版本的Office2010有效.零售版本的就别指望KMS激活了. 怎么看自己是不是VL版本的,只要看帮助里面激活的地方 ...
- Android Activity全面解析
Android Activity全面解析 首先,就从Android四大组件Activity开始. 1.Activity生命周期方法完全解析 activity_lifecycle.png 1).on ...
- spring 项目中使用 hibernate validator验证输入参数
1 hibernate validator 官方文档:https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_si ...
- Guid ToString 格式
转自 http://www.cnblogs.com/greenerycn/archive/2010/04/25/guid_tostring_format.html 在日常编程中,Guid是比较常用的, ...
- HTTP模块SuperAgent
superagent它是一个强大并且可读性很好的轻量级ajaxAPI,是一个关于HTTP方面的一个库,而且它可以将链式写法玩的出神入化. var superagent = require('super ...
- golang 解决 TCP 粘包问题
什么是 TCP 粘包问题以及为什么会产生 TCP 粘包,本文不加讨论.本文使用 golang 的 bufio.Scanner 来实现自定义协议解包. 协议数据包定义 本文模拟一个日志服务器,该服务器接 ...
- 解决Installation failed with message Failed to finalize session : INSTALL_FAILED_INVALID_APK的问题
Android Studio 运行AVD的时候出现: Installation failed with message Failed to finalize session : INSTALL_FAI ...