Libgdx 之JSON文件解析

上一节我们学习了XML文件的解析,接下来我们再了解JSON文件的解析。在Libgdx中也提供了Json类来帮助我们解析文件,最常用的方法是fromJson(java.lang.Class type, FileHandle file) 通过此方法我们必须先定义一个内部类来抽象的表示Json文件。

{
    "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;
            }
        }
}

时间: 2024-08-10 17:18:33

Libgdx 之JSON文件解析的相关文章

【微信】微信小程序 微信开发工具中新创建的json文件,编译报错VM1781:2 pages/module/module.json 文件解析错误 SyntaxError: Unexpected end of JSON input

如果新创建报错:编译报错VM1781:2 pages/module/module.json 文件解析错误  SyntaxError: Unexpected end of JSON input 解决方法: 在JSON文件中添加 即可解决 { } 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/9076271.html

Twaver的mono-desiner导出的json文件解析

以画的交换机为例,其他大概都差不多. 利用Twaver做出交换机模型如图1所示,其中,每一个端口都是一个单独的对象.具体Twaver操作流程参见网址:http://twaver.servasoft.com/doc 中的操作指南. 将做好的模型导出为json格式的文件.下面将以图一所示的交换机为例对json文件进行简单解析.如图二所示为图一交换机的所导出的json文件的简单结构. 首先,所导出的json文件为一个json对象,里面包含有两个数组为primitives(原始)和assembles(装

json文件解析出现异常

今天在尝试用自带的NSJSONSerialization方法来解析本地json文件的时候碰到了系统异常,app自动终止 问题如下: 代码: NSString *newCoursePath = [[NSBundle mainBundle] pathForResource:@"addcourses" ofType:@"json"]; NSData *data = [NSData dataWithContentsOfFile:newCoursePath]; NSArray

json文件解析

对json文本的解析有两种方法: 第一种:利用 child指针进行访问 利用child指针进行访问,需要不断的进行child,以进入深层循环中. 访问面文本的slots数组中的成员 { "semantic":{ "slots":[ { "name":"ZhangSan", "ip":"ZhangSan" }, { "name":"LiSi", &q

HBuilder开发移动App——manifest.json文件解析

以前做过Android App开发,对于各项配置都是在AndroidManifest.xml文件中完成的,包括权限的设定.图标.标签.App的名字.Activity注册等等 使用HBuilder开发移动App,HBuilder是基于Eclipse进行二次开发的,所以新建项目等各项操作与Eclipse类似. 首先新建一个移动App项目 这里选择mui项目,点击完成后可以看到项目文件列表,如下: 这里我们主要看一下manifest.json文件 应用信息 选择应用信息一项,然后 1.填写应用名称 也

iOS开发JSON文件解析数据成Model的过程简单介绍

本文内容来源:http://blog.csdn.net/smking/article/details/40432287 JSONModel, Mantle 这两个开源库都是用来进行封装JSON->Model的, 想想看, 直接向服务器发起一个请求,然后回来后,就是一个Model, 直接使用, 这是一个多么美好的事情. 先说说这两个的差别. 这两个使用的方法其实都差不多, 详细的使用方法请直接GitHub上找, 还是比较简单地. 就我个人来说JSONModel相对起来使用较为简单,而Mantle使

IIS7 增加JSON文件解析

在MIME增加一个Json类型,在MIME增加一个配置如:添加---> 文件扩展名为 .JSON ,MIME类型为text/json(也有将application/x-javascript) 然后再在应用程序映射增加一个脚本映射请求路径为:*.JSON,可执行文件为C:/Windows/System32/inetsrv/asp.dll. 如果IIS7 没有找到asp.dll 需要添加插件: 控制面板-->程序-->打开和关闭Windows功能--->InterNet信息服务---&

c++ rapidjson读取json文件 解析

#include <iostream> #include <string> #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/stringbuffer.h" using namespace rapidjson; using namespace std; string readfile(const char *f

使用rapidJson解析json文件

今天介绍如果如何使用rapidJson解析json文件~笔者之前也使用过json库,可惜搬到cocos2d-x使用过程出现问题...忘了什么问题,搞了很久解决不了,索性使用cocos2d-x自带的json解析库~ 首先引入头文件,#include "cocostudio/CocoStudio.h",因为从cocosStudio导入项目的时候会有json文件~ 接着就是解析: std::string filePath = FileUtils::getInstance()->full