Libgdx之JSON文件解析
2016-07-11 21:42
513 查看
上一节我们学习了XML文件的解析,接下来我们再了解JSON文件的解析。在Libgdx中也提供了Json类来帮助我们解析文件,最常用的方法是fromJson(java.lang.Class type, FileHandle file) 通过此方法我们必须先定义一个内部类来抽象的表示Json文件。
上面的Json文件我们可以看出,Json文件中包含对象name, experience, strength, dexterity, dexterity, intelligence, items, 共7个属性,因此我们需要定义一个Charactor.class类来容纳这7个属性。 同时我们可以知道items包含2个属性: name, number,因此我们需要定义一个类Item.class来容纳这7个属性。
下面是具体的代码实现:
{ "name": "David", "experience": 2534, "strength": 6, "dexterity": 8, "intelligence": 6, "items" : [ { name: "iron-sword", number: 1 }, { name: "wooden-shield", number: 1 }, { name: "leather-armor", number: 1 }, { name: "leather-boots", number: 1 }, { name: "healing-potion", number: 3 }, { name: "poison-herbs", number: 2 } ] }
上面的Json文件我们可以看出,Json文件中包含对象name, experience, strength, dexterity, dexterity, intelligence, items, 共7个属性,因此我们需要定义一个Charactor.class类来容纳这7个属性。 同时我们可以知道items包含2个属性: name, number,因此我们需要定义一个类Item.class来容纳这7个属性。
下面是具体的代码实现:
public class JsonTest extends ApplicationAdapter { @Override public void create() { Json json = new Json(); json.setElementType(Character.class, "items", Item.class); // 指定Character中的item数据类型 Character character = json.fromJson(Character.class, Gdx.files.internal("character.json")); // 从Json文件中创建一个Charactor对象 System.out.println(character); // System.out.println("dexterity: " + character.dexterity); // 访问单个属性,需要建立对应的class System.out.println(); System.out.println("====================="); System.out.println("Serializing character"); System.out.println("====================="); System.out.println(json.prettyPrint(json.toJson(character))); } public static class Item { private String name; private int number; @Override public String toString() { return name + "(" + number + ")"; } } public static class Character { private String name = ""; private int experience = 0; private int strength = 1; private int dexterity = 1; private int intelligence = 1; public Array<Item> items = new Array<Item>(); @Override public String toString() { String string = new String(); string += "Name: " + name + "\n"; string += "Experience: " + experience + "\n"; string += "Strength: " + strength + "\n"; string += "Dexterity: " + dexterity + "\n"; string += "Intelligence: " + intelligence + "\n"; string += "Items: "; for (Item item : items) { string += item.toString() + " "; } return string; } } }
相关文章推荐
- Android使用libgdx实现模拟方向键控制角色移动的方法
- Libgdx之封装简单的脚本机制
- Libgdx学习笔记:UI之技能冷却按钮
- Android中AlertDialog的使用小结
- libgdx html 跨平台的坑
- gwt中 java与js 的相互调用
- libGDX引擎之存入数据到keychain(IOS)
- 二,游戏的game loop搭建
- 三,资源初始化操作和主菜单界面的创建
- 四,主要菜单界面的创建
- 五,一个可以左右滑动的关卡选择界面
- 六,游戏主界面
- 七,游戏世界
- 八,游戏世界的渲染
- 九,碰到的问题
- 学习Libgdx游戏开发(二)
- 学习Libgdx游戏开发(一)
- libgdx 自动适应分辨率的方法
- libgdx学习笔记02