【发布时间】:2019-06-12 04:59:40
【问题描述】:
我对 Unity 和 C# 非常陌生。我正在尝试将 JSON 字符串加载到 Unity 并且一切都按预期工作,但是当我想加载 2D 数组时它根本不起作用。
我有这个...
{
"status": 0,
"email": "exmpl@u",
"questions": [
{
"A": "Faro",
"C": "Oporto",
"B": "Lisbon",
"D": "Coimbra",
"question": "Which is the capital of Portugal?",
"your_answer": "",
"points": 10,
"correct_answer": "B"
},
{
"A": "Seville",
"C": "Madrid",
"B": "Barcelona",
"D": "C\u00e1ceres",
"question": "Which is the capital of Spain?",
"your_answer": "",
"points": 15,
"correct_answer": "C"
},
{
"A": "Gigon",
"C": "Cannes",
"B": "Marselle",
"D": "Paris",
"question": "Which is the capital of France?",
"your_answer": "",
"points": 20,
"correct_answer": "D"
}
]
}
...或者这个字符串
{
"status": 0,
"email": "exmpl@u",
"questions": [
{
"A": "Marcelo Rebelo de Sousa",
"C": "M\u00e1rio Soares",
"B": "Anibal Cavaco Silva",
"D": "Jorge Sampaio",
"question": "Which is the president of Portugal?",
"your_answer": "",
"points": 10,
"correct_answer": "A"
},
{
"A": "Fran\u00e7ois Miterrand",
"C": "Jacques Chirac",
"B": "Emmanuel Macron",
"D": "Nicolas Sarkozy",
"question": "Which is the president of France?",
"your_answer": "",
"points": 15,
"correct_answer": "B"
}
]
}
我创建了一个类 QuizData 用于保存其中的所有对象,如下所示
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace QuizDataManager
{
public class QuizData
{
public int status;
public string email;
public string[] questions;
}
}
我可以轻松访问变量状态和电子邮件 myQuizDataObject.status 或 myQuizDataObject.email 但我没有得到任何与 myQuizDataObject.questions[0] 或类似的东西。
我该怎么做?
【问题讨论】:
-
您好,问题可能是因为您为问题定义了一个字符串数组,但 JSON 文件包含具有两个字符串的对象。也许尝试创建另一个名为的类,它包含两个字符串,然后创建一个数组?
-
@MilanKarman 我不知道有两个字符串的类,但我创建了一个带有“A”、“B”、“C”、“D”、“问题”的字符串的类" 以此类推,然后将行 public Questions[] questions = new Questions[3];在我的 QuizData 类中并尝试使用 myQuizDataObject.questions[0].A 访问它,但仍然无法正常工作。 Unity 说“NullReferenceException: Object not set to an instance of an Object”
-
听起来应该可以。如果您使用 Unity 的内置 JSON 解析器,请尝试使用 newtonsoft.com/json 之类的东西。我总是发现 Unity 的 JSON 解析器表现得很奇怪