- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我一直在寻找将我的 Json 数组转换为 Unity 中的对象数组的方法。我从一个 2 年前的旧线程中找到了我的解决方案,但没有解释,但我很好奇它是如何工作的。
如果我使用 Visual Studio 查找 FromJson
的定义它向我展示了这个
public static T FromJson<T>(string json);
据我了解,FromJson
要求填充一个对象,我给类 MyWrapper
但除了告诉MyWrapper
他包含 Question
的列表我从不要求它在列表中创建一个新项目。那么它实际上是如何填充列表的呢?
C#
MyWrapper wrappedQuestions = JsonUtility.FromJson<MyWrapper>(jsonString);
[Serializable]
public class MyWrapper
{
public List<Question> questions;
}
[Serializable]
public class Question
{
public int questionType;
public string questionString;
public int questionAnswer;
}
JSON
{
"questions": [
{
"questionType": 1,
"questionString": "4^2",
"questionAnswer": 16
},
{
"questionType": 2,
"questionString": "√(25)",
"questionAnswer": 5
}
]
}
我还是一个初级程序员,所以我希望我能在这里提出这样的问题。
最佳答案
如果您想知道为什么需要包装器,那只是因为 Unity 工程师没有添加对基本类型或数组的直接支持。这就是他们编程的方式。大多数 Json API 不是这样的。
So how does it actually fill the list?
1。它读取您传递给它的 json。它检测 json 中的 questions
变量。由于格式如 []
和分隔每个项目的逗号,它检测到 questions
变量是一个数组。
2。它找到 questions
变量的类型,它是 Question
或 Question
列表。
3.它使用Activator.CreateInstance
要创建 Question
的新实例,请从 json 中的每个变量中读取每个值,然后用它创建的新实例用反射填充它们。
4。它返回已填充的新实例。
如果您阅读并了解如何在 C# 中使用反射执行基本操作,您可能能够使用 Queue
类创建自己的简单 Json 解析器。
最后,您可以使用来自 this 的 JsonHelper
包装器轻松回答序列化/反序列化数组,而无需为每个类制作包装器。
关于c# - 包装器如何为 JsonUtility 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47652604/
这个问题在这里已经有了答案: Serialize and Deserialize Json and Json Array in Unity (9 个回答) 关闭 5 年前。 这是我用于测试目的的 J
所以我一直在寻找将我的 Json 数组转换为 Unity 中的对象数组的方法。我从一个 2 年前的旧线程中找到了我的解决方案,但没有解释,但我很好奇它是如何工作的。 如果我使用 Visual Stud
这是我的 JSON: {"data":[{"id":1,"layoutLabel":"Sameer Non Custom","orbNumber":"["0","1","2","3"]"}, {"id
我想反序列化包含关卡信息的 json 文件。给定这个名为 1.json 的示例 .json 文件 { "name": "Level One", "map": [ [{ "g
我一直在学习 this 的教程视频。 教程源代码可以在here找到... 我有一个问题,我的 Json 数据都存储在 1 行中, 我希望数据在单个对象数据中换行 这里是 Json 教程的代码 Acto
我有一些数据需要序列化/反序列化,但 JsonUtility 只是没有做它应该做的事情。这是我正在使用的对象: public class SpriteData { public string
这个问题在这里已经有了答案: Serialize and Deserialize Json and Json Array in Unity (9 个回答) 关闭 5 年前。 我在将 json 字符串
我有以下类,它是可序列化的,并且只有字符串作为字段: using UnityEngine; using System.Collections; using System.Collections.Gen
我从 Servlet 获得了一个 JSON 字符串,我想使用 JavaScript 覆盖类型解析这个字符串。 我的整个编码都基于您发布的示例 google我的目标是将 JSON 字符串加载到 Arti
我正在使用 RequestBuilder 读取静态 JSON 文件,并确认我在响应的 .getText() 方法中看到了预期的 JSON。我已经精简了我正在做的事情来尝试找出确切的问题。这就是我能做的
我试图了解如何使用 JSONutil 在 jquery 和 Coldfusion 之间序列化/反序列化 JSON。我无法使用 Coldfusion 7,因此无法在 cfc 中使用 returnform
模型 using System.Collections.Generic; using UnityEngine; [System.Serializable] public class GetPeople
这是我在 Unity 中发出的请求: UnityWebRequest request = UnityWebRequest.Put(baseUrl + "miniGame1s/", JsonUtilit
我是一名优秀的程序员,十分优秀!