天天看点

(libgdx学习)libgdx中的JSON应用

(官方文档中有一些类应该还没有实现,但是引擎的作者貌似就在写的时候就用了。。)

一、初始化及常见的API

Json json = new Json();//Json对象的创建及初始化
json.toJson(person):将person对象序列化成json字符串
/**
		 * 为Person中的名为numbers时的成员变量指定类型名为PhoneNumber
		 */
//		json.setElementType(Person.class, "numbers", PhoneNumber.class);
/**
		 * 如果在JSON中对类的写操作无法避免的时候,我们可以给类起一个别名
		 * 
		 * json.addClassTag("phoneNumber", PhoneNumber.class)在输出的时候给
		 * PhoneNumber类起了一个别名phoneNumber
		 */
		json.addClassTag("phoneNumber", PhoneNumber.class);

/**
		 * prettyPrint(person):格式化输出
		 */
		System.out.println("------>>>" + json.prettyPrint(person));

/**
//		 * json.fromJson(Person.class, jsonText):反序列化.及将json字符串转换成对象
//		 * 
//		 */
//		Person person2 = json.fromJson(Person.class, jsonText);
           

二、应用举例

Person

package com.example.groupactiontest;

import java.util.ArrayList;

public class Person {
	private String name;
	private int age;
	private ArrayList numbers;
	
	public Person() {
		
	}
	
	
	
	


	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public ArrayList getNumbers() {
		return numbers;
	}
	public void setNumbers(ArrayList numbers) {
		this.numbers = numbers;
	}






	@Override
	public String toString() {
		return "Person [name=" + name + ", age=" + age + ", numbers=" + numbers
				+ "]";
	}






	
	
	
}
           

PhoneNumber

package com.example.groupactiontest;

public class PhoneNumber {
	private String name;
	private String number;

	public PhoneNumber() {
		// TODO Auto-generated constructor stub
	}
	
	public PhoneNumber(String name, String number) {
		super();
		this.name = name;
		this.number = number;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}
	
	
}
           

MyGame(1)主要用于演示Objetc---->JSON字符串的过程

package com.example.groupactiontest;

import java.util.ArrayList;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input.Keys;
import com.badlogic.gdx.Input.Peripheral;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.utils.Json;

public class MyGame implements ApplicationListener {

	
	
	@Override
	public void create() {
		Person person = new Person();
		person.setName("Nate");
		person.setAge(31);
		
		ArrayList numbers = new ArrayList();
		numbers.add(new PhoneNumber("home","206-555-1234"));
		numbers.add(new PhoneNumber("work","425-555-4321"));
		person.setNumbers(numbers);
		
		Json json = new Json();//Json对象的创建及初始化
		/**
		 * json.toJson(person):将person对象序列化成json字符串
		 */
//		System.out.println( "-------->" + json.toJson(person));
		
		/**
		 * 为Person中的名为numbers时的成员变量指定类型名为PhoneNumber
		 */
//		json.setElementType(Person.class, "numbers", PhoneNumber.class);
		
		/**
		 * 如果在JSON中对类的写操作无法避免的时候,我们可以给类起一个别名
		 * 
		 * json.addClassTag("phoneNumber", PhoneNumber.class)在输出的时候给
		 * PhoneNumber类起了一个别名phoneNumber
		 */
		json.addClassTag("phoneNumber", PhoneNumber.class);
		
		/**
		 * prettyPrint(person):格式化输出
		 */
		System.out.println("------>>>" + json.prettyPrint(person));
		
	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub

	}

	@Override
	public void pause() {
		// TODO Auto-generated method stub

	}

	@Override
	public void render() {
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		
	}

	@Override
	public void resize(int arg0, int arg1) {
		// TODO Auto-generated method stub

	}

	@Override
	public void resume() {
		// TODO Auto-generated method stub

	}

}
           

MyGame(2)主要用于演示JSON------>Object的过程

package com.example.groupactiontest;

import java.util.ArrayList;

import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL10;
import com.badlogic.gdx.utils.Json;
import com.badlogic.gdx.utils.JsonWriter;
import com.badlogic.gdx.utils.JsonWriter.OutputType;

public class MyGame implements ApplicationListener {

	
	
	@Override
	public void create() {
		Person person = new Person();
		person.setName("Nate");
		person.setAge(31);
		
		ArrayList numbers = new ArrayList();
		numbers.add(new PhoneNumber("home","206-555-1234"));
		numbers.add(new PhoneNumber("work","425-555-4321"));
		person.setNumbers(numbers);
		
//		Json json = new Json();
//		String jsonText = json.toJson(person);
//		System.out.println("<<<<---------"+jsonText);
//		
//		/**
//		 * json.fromJson(Person.class, jsonText):反序列化.及将json字符串转换成对象
//		 * 
//		 */
//		Person person2 = json.fromJson(Person.class, jsonText);
//		System.out.println("--------->>>>>"+ person2);
		
		
//		Json json = new Json();
//		json.setOutputType(OutputType.minimal);
//		/**
//		 * json.toJson(person, Object.class):将person对象以Object的类型转换成json字符串
//		 * 
//		 * 这时候打印出来的json字符串中就会有类型的说明
//		 * 如class:com.example.xxxx.Person之类的
//		 */
//		String text = json.toJson(person, Object.class);
//		System.out.println(json.prettyPrint(text));
//		Object person2 = json.fromJson(Object.class, text);//将text以Object的转成Person对象
		
		
		/**
		 * JsonValue还没有实现
		 */
//		Json json = new Json();
//		String text = json.toJson(person,Object.class);
		
		
//		JsonWriter json = new JsonWriter(writer)
//		json.writeObjectStart();
//		json.writeValue("a", "1");
//		json.writeValue("b","2");
//		json.writeObjectEnd();
//		
//		System.out.println( "hello-------->"+ json.toString());
	}

	@Override
	public void dispose() {
		// TODO Auto-generated method stub

	}

	@Override
	public void pause() {
		// TODO Auto-generated method stub

	}

	@Override
	public void render() {
		Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
		
	}

	@Override
	public void resize(int arg0, int arg1) {
		// TODO Auto-generated method stub

	}

	@Override
	public void resume() {
		// TODO Auto-generated method stub

	}

}
           

四、源码下载

第一个MyGame(1):http://download.csdn.net/detail/caihongshijie6/7055195

第二个MyGame(2):http://download.csdn.net/detail/caihongshijie6/7055205