在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中相关的知识,希望对你有一定的参考价值。

我一直在尝试将JSON对象及其内部的另一个对象以及本机c#变量打印到嵌套的json对象中。如果没有自定义对象,则该对象可以很好地打印,但是,一旦添加了自定义对象,则仅打印内部对象的InstanceID。这是代码,我试图找到一种解决方案,但是我没有看到类似的问题。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Character : MonoBehaviour
{
    public string name, char_class, race, alignment;
    public int hp, xp, armor, speed;
    public List<string> itemList = new List<string>();
    public Abilities abilities;

    public string SaveToString()
    {
        return JsonUtility.ToJson(this);
    }
}

public class Abilities : MonoBehaviour
{
    public int strength, dexterity, intelligence, constitution, wisdom, charisma;
}

输出为:

{"name":"test","char_class":"Barbarian","race":"Dragonborn","alignment":"Lawful Good","hp":0,"xp":12,"armor":1,"speed":123,"itemList":[],"abilities":{"instanceID":0}}

但是我试图让它在其他json打印输出中具有abilities对象的详细JSON JSON选项卡。

答案

尝试将[Serializable]添加到您的Abilities类中。您的Character类可能暗含序列化,因为它是调用类。

此处有更多信息:https://docs.unity3d.com/Manual/JSONSerialization.html

或者,您可能会实现一些更广泛使用的功能,例如Json.Net(在C#中,不特别对Unity3D进行注释)。不过,目前还不确定在Unity中实现第三方依赖有多么容易。

以上是关于在Unity中使用JsonUtility将带有自定义子对象的类打印到JSON输出中的主要内容,如果未能解决你的问题,请参考以下文章

使用 Unity JsonUtility.FromJson 从具有嵌套值的 json 创建对象

无法在 Unity 5.4 中使用 JsonUtility 反序列化 JSON。子集合始终为空

Unity中使用JsonUtility.FromJson反序列化JSON

c#/unity json 错误,并希望使用 Unity JsonUtility 或 litJson 在 JsonObject 中检索 jsonObject

Unity -JsonUtility的使用

Unity学习笔记Unity使用JsonUtility解析Json(附注意事项)