Unity自带的Json解析工具类JsonUtility居然没有API用于解析集合类型,也太鬼扯了吧。


下面是一个简单的例子:

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吧。

由于Unity使用的.Net Framwork版本太低,直接Nuget下载的Newtonsoft.json是不能安装的。报错如下图:

解决办法:

【Unity】JsonUtility解析集合(collections)类型(List)的更多相关文章

  1. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  2. .NET面试题解析(01)-值类型与引用类型

      系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 常见面试题目: 1. 值类型和引用类型的区别? 2. 结构和类的区别? 3. delegate是引用类型还 ...

  3. Backbone.js 为复杂Javascript应用程序提供模型(models)、集合(collections)、视图(views)的结构

    Backbone.js 为复杂Javascript应用程序提供模型(models).集合(collections).视图(views)的结构.其中模型用于绑定键值数据和 自定义事件:集合附有可枚举函数 ...

  4. Java集合——Collections工具类

    Java集合——Collections工具类 摘要:本文主要学习了Collections工具类的常用方法. 概述 Collections工具类主要用来操作集合类,比如List和Set. 常用操作 排序 ...

  5. java基础小练习,1-打印一百次(1~10)的随机数,2-固定一个随机数(1~100),然后猜出他,3-定义以指定格式打印集合(ArrayList类型作为参数),使用{}括起来,使用@代替,分隔每个元素

    推荐自己码一下,可以使用别的方法,面向对象,不需要注重过程 /* 题目:我需要打印一百次(1~10)的随机数 */ import java.util.Random; public class demo ...

  6. Unity Json解析IPA

    今天看到一个unity 自带的解析json的IPA,感觉比litjson好用很多,废话不多,上代码 using System.Collections; using System.Collections ...

  7. Unity -JsonUtility的使用

    今天,为大家分享一下unity上的Json序列化,应该一说到这个词语,我们肯定会觉得,这应该是很常用的一个功能点:诚然,我们保存数据的时候,也许会用到json序列化,所以,我们有必要快速了解一下它的简 ...

  8. Guava 3: 集合Collections

    一.引子 Guava 对JDK集合的拓展,是最成熟且最受欢迎的部分.本文属于Guava的核心,需要仔细看. 二.Guava 集合 2.1 Immutable Collections不可变集合 1.作用 ...

  9. Unity API 解析 (陈泉宏著)

    1 Application类 2 Camera类 3 GameObject类 4 HideFlags类 5 Mathf类 6 Matrix4x4类 7 Object类 8 Quaternion类 9 ...

随机推荐

  1. WARNING: The host 'r6' could not be looked up with /usr/local/mysql/bin/resolveip.

    初始化MySQL数据库提示以下信息: # /usr/local/mysql/scripts/mysql_install_db \ > --defaults-file=/etc/my.cnf \ ...

  2. 神经网络写诗(charRNN)

    https://github.com/chenyuntc/pytorch-book 基于pytorch ,许多有趣的小应用.感谢作者! 作者的代码写得非常清晰,配置方法也很明确,只需要按照提示,安装依 ...

  3. Sql 查询当天、本周、本月记录

    --查询当天: select * from info where DateDiff(dd,datetime,getdate())=0 --查询24小时内的: select * from info wh ...

  4. Android Studio开发-高效插件强烈推荐

    Android Studio开发-高效插件强烈推荐 现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好And ...

  5. 解决iPad/iPhone下手机号码会自动被加上a标签的问题

    解决办法: 在页面顶部<head></head>中增加: <meta name="format-detection" content="te ...

  6. Windows 上 怎么安装 install elasticsearch plugin

    D:\elasticsearch-5.2.1\bin>elasticsearch-plugin install file:///D:/elasticsearch -5.2.1/bin/elast ...

  7. linux分享二:Linux如何修改字符集

    问题: 当在项目中用到服务器端导出并且查询条件中包含汉字时,总是导出失败,Excel中出现null字样,如何解决方法呢? 解决方法: 把linux的字符集改变一下. 路径:etc/sysconfig/ ...

  8. [LeetCode] Palindrome Permutation I & II

    Palindrome Permutation Given a string, determine if a permutation of the string could form a palindr ...

  9. 关于iReport-5.6.0之前版本 “无法启动”或者“一开就关闭”的 某些原因

    在经过Google搜索后.外国的大神说: We don't support Java 8 right now. Support will be added in next versions. 大概意思 ...

  10. Java Web(十一) 分页功能的实现

    虽然现在有很多好用的框架,对分页进行支持,很简单的就把分页的效果做出来,但是如果自己手写是一个怎样的流程的?今天就来说说它,手动实现分页效果. --WH 一.分页的思路 首先我们得知道写分页代码时的思 ...