所以我有一些Json:
{
"name": "Shadow Realm",
"description": "A spooky Haloween inspired map",
"map": {
"version": 79,
"color_palette": [
{
"r": 96,
"g": 209,
"b": 234,
"a": 255
},
{
"r": 255,
"g": 55,
"b": 55,
"a": 255
}]
}
}
我能够阅读前几个值,但是我无法阅读该版本,我不确定我应该阅读地图条目,任何想法? 我宁愿不必使用插件,因为我希望尽可能小的项目,如果可行的话。
using UnityEngine;
using System.Collections;
using System.Reflection;
using System.Linq;
using System;
[System.Serializable]
public class Tests : MonoBehaviour
{
private string jsonMapData;
void Start()
{
jsonMapData = Import_bnl_bin.LoadResourceTextfile("map.json");
MyClass jsonMap = new MyClass();
jsonMap = JsonUtility.FromJson<MyClass>(jsonMapData);
Debug.Log("Name " + jsonMap.name + " : Desc " + jsonMap.description + " : Version " + jsonMap.version);
}
public class MyClass
{
public string name;
public string description;
public int version;
}
}
答案 0 :(得分:1)
使用http://json2csharp.com我使用您的示例JSON文档生成了以下类。
public class ColorPalette
{
public int r { get; set; }
public int g { get; set; }
public int b { get; set; }
public int a { get; set; }
}
public class Map
{
public int version { get; set; }
public List<ColorPalette> color_palette { get; set; }
}
public class RootObject
{
public string name { get; set; }
public string description { get; set; }
public Map map { get; set; }
}
我不熟悉JsonUtility
,但我的猜测是你会替换这一行:
jsonMap = JsonUtility.FromJson<MyClass>(jsonMapData);
有了这个:
jsonMap = JsonUtility.FromJson<RootObject>(jsonMapData);
或者您可以将RootObject
重命名为MyClass
。
答案 1 :(得分:1)
似乎这些类需要可序列化
[Serializable]
public class Map
{
public int version;
public List<ColorPalette> color_palette;
}
否则它无法读取数据,我最终也删除了
{ get; set; }
因为它超越了
.FromJson()
功能并使其返回null