【发布时间】:2018-05-31 20:29:49
【问题描述】:
我是 Unity/C# 的新手,很难将两个对象转换为 JSON。
目标是构建一个如下所示的 JSON 对象:
{
"operation": "pin",
"question": {
"studentPin": "123456"
}
}
在 Java 中,我只需执行以下操作:
Question question = new Question();
question.setStudentPin(pin);
ServerRequest request = new ServerRequest();
request.setOperation(Constants.PIN_OPERATION);
//set the values entered for the pin entered
request.setQuestion(question);
String json = gson.toJson(request);
但是,当我在 C# 中执行以下操作时
//Creating a new Question object
Question question = new Question();
question.studentPin = pinNumber.text;
ServerRequest request = new ServerRequest();
request.operation = Constants.PIN_OPERATION;
//set the values entered for the pin entered
request.question = question;
string json = JsonConvert.SerializeObject(request);
我收到以下错误:
JsonSerializationException:检测到类型为“Question”.Path 的属性“question”的自引用循环
我已经用谷歌搜索了这个错误,并了解到这通常发生在您的模型类中有对父对象的引用并且父对象有对其子对象的引用时,这会在序列化过程中导致循环引用。
但是,我不确定该如何解决这些问题。
我的问题类设置如下:
public class Question : MonoBehaviour {
public string studentPin;
}
我的 ServerRequest 类设置如下:
public class ServerRequest : MonoBehaviour {
public string operation;
public Question question;
}
任何帮助或指导将不胜感激。
【问题讨论】:
-
你试过了吗:var json = JsonConvert.SerializeObject(request, Formatting.Indented, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore });