"components":[
{
"class":"AssetReference",
"asset":{
"class":"TextureRegionAsset",
"relativePath":"gfx/opengraph.png"
}
},
{
"class":"Layer"
},
{
"class":"ProtoVisSprite",
"width":5,
"height":5
},
{
"class":"Transform",
"x":0.13817275,
"y":2.8430145,
"scaleX":0.2,
"scaleY":0.2
},
{
"class":"Origin"
},
{
"class":"Tint"
},
{
"class":"Renderable",
"zIndex":2
},
{
"class":"VisID",
"id":"scratch"
}
]
我在使用LibGDX解析嵌套资产时遇到了一些问题。有谁知道如何使用TextureRegionAsset中的relativePath将资产分配给AssetReference?
我知道我可以删除"班级"处理和简单解析JSON,但我需要能够使用LibGDX来处理它。
理想情况下,我希望解析数据并从JSON创建一个精灵。
感谢。
答案 0 :(得分:7)
您可以使用JsonReader
并获取JsonValue
。
JsonReader json = new JsonReader();
JsonValue base = json.parse(Gdx.files.internal("file.json"));
//print json to console
System.out.println(base);
//get the component values
JsonValue component = base.get("components");
//print class value to console
System.out.println(component.getString("class"));
//array objects in json if you would have more components
for (JsonValue component : base.get("components"))
{
System.out.println(component.getString("class"));
System.out.println(component.get("asset").getString("class");
System.out.println(component.get("asset").getString("relativePath");
}
答案 1 :(得分:1)
实际上有一个有用的libgdx wiki页面:
https://github.com/libgdx/libgdx/wiki/Reading-and-writing-JSON
显然,它本身已经可以使用嵌套类了。 维基页面有这个例子:
Json json = new Json();
Person person = json.fromJson(Person.class, text);
将以下内容用作文本:
{
class: com.example.Person,
numbers: [
{
class: com.example.PhoneNumber,
number: "206-555-1234",
name: Home
},
{
class: com.example.PhoneNumber,
number: "425-555-4321",
name: Work
}
],
name: Nate,
age: 31
}
这是使用具有以下属性的示例类“Person”:
字符串文字是json.toJson(person)
的结果。您生成的序列化字符串看起来格式相同,这使我假设您已经在使用Json序列化程序,而不是反序列化程序。