您的位置:首页 > 编程语言 > Java开发

Java对象与JSON互相转换jsonlib以及手动创建JSON对象与数组——(二)

2017-08-01 22:17 507 查看
    首先声明一下,jsonlib转换与GSON相比太差劲了,操作不是一般的繁琐。GSON可以直接转换成各种集合与对象类型。强烈推荐使用GSON。而且GSON一个方法就可以解决,jsonlib转来转去太繁琐了。

手动创建JSONObject与JSONArray有用,用于读取文件对字符串进行处理

-----------------------------jsonlib操作复杂,转换Map与list<map>更是复杂----------------

Jar包



User.java

package TestJson_JSONlib;

public class User {

private String id;
private String name;
private Integer age;
private String address;
public String getId() {
return id;
}
public int getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User() {
}
public User(String id, String name, Integer age, String address) {
super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";
}

}


1.Java对象转json(操作复杂)

对象类型用JSONObject,集合类型用JSONArray。

package TestJson_JSONlib;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.xml.bind.UnmarshallerHandler;

import org.junit.Test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class Bean2JSON {

//    测试单个对象转JSON,转单个对象用JSONObject
@Test
public void test1(){
User user = new User("1", "QIAOZHI",25,"山西太原");
JSONObject jsonObject =  JSONObject.fromObject(user);
String json = jsonObject.toString();
System.out.println(json);
//{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}
}

//    测试list转JSON,转集合用JSONArray,会产生[]
@Test
public void test2(){
List<User> list = new ArrayList<User>();
list.add(new User("1", "QIAOZHI",25,"山西太原"));
list.add(new User("2", "QIAOZHI",25,"山西太原"));
list.add(new User("3", "QIAOZHI",25,"山西太原"));
JSONArray jsonArray =  JSONArray.fromObject(list);
String json = jsonArray.toString();
System.out.println(json);
//        [{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"3","name":"QIAOZHI","age":25,"address":"山西太原"}]
}

//    测试map对象转JSON,转单个对象用JSONObject
@Test
public void test3(){
Map<String,User> map = new HashMap<String,User>();
map.put("1", new User("1", "QIAOZHI",25,"山西太原"));
map.put("2", new User("2", "QIAOZHI",25,"山西太原"));
map.put("3", new User("3", "QIAOZHI",25,"山西太原"));
JSONObject jsonObject=  JSONObject.fromObject(map);
String json = jsonObject.toString();
System.out.println(json);
//        {"3":{"address":"山西太原","age":25,"id":"3","name":"QIAOZHI"},"2":{"address":"山西太原","age":25,"id":"2","name":"QIAOZHI"},"1":{"address":"山西太原","age":25,"id":"1","name":"QIAOZHI"}}
}

//    测试list<map>对象转JSON,转集合用JSONArray,会产生[]
@Test
public void test4(){
List<Map<String,User>> list = new ArrayList<>();
Map<String,User> map1 = new HashMap<String,User>();
Map<String,User> map2 = new HashMap<String,User>();
map1.put("map11", new User("1", "QIAOZHI",25,"山西太原"));
map1.put("map12", new User("2", "QIAOZHI",25,"山西太原"));
map2.put("21", new User("11", "QIAOZHI",25,"山西太原"));
map2.put("22", new User("21", "QIAOZHI",25,"山西太原"));
list.add(map1);
list.add(map2);
JSONArray jsonArray =  JSONArray.fromObject(list);
String json = jsonArray.toString();
System.out.println(json);
//        [{"map12":{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},"map11":{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}},{"21":{"id":"11","name":"QIAOZHI","age":25,"address":"山西太原"},"22":{"id":"21","name":"QIAOZHI","age":25,"address":"山西太原"}}]
}

}


2.JSON字符串转Java对象与list(只测了转bean与list)

转出来的中间还有空格,使用时候还得去空格。太繁琐了。

在将 Json 形式的字符串转换为 JavaBean 的时候需要注意 JavaBean 中必须有无参构造函数,否则会报找不到初始化方法的错误。

package TestJson_JSONlib;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.junit.Test;

import com.google.gson.Gson;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSON2Bean {
//    测试json转单个对象
@Test
public void test1(){
String json = "{\"id\":\"1\",\"name\":\"QIAOZHI\",\"age\":25,\"address\":\"山西太原\"}";
JSONObject jsonObject = JSONObject.fromObject(json);
System.out.println(jsonObject);  //产生一个json格式的json对象
//        {"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"}
User user = (User) JSONObject.toBean(jsonObject, User.class);
System.out.println(user);
//        User [id=1, name=QIAOZHI, age=null, address=山西太原]
}

//    测试JSON转list(太反复杂了)
@SuppressWarnings("unchecked")
@Test
public void test2(){
String json = "[{'id':'1','name':'QIAOZHI','age':25,'address':'山西太原'},{'id':'2','name':'QIAOZHI','age':25,'address':'山西太原'},{'id':'3','name':'QIAOZHI','age':25,'address':'山西太原'}]";
List<User> list = new ArrayList<User>();
JSONArray jsonArray = JSONArray.fromObject(json);
System.out.println(jsonArray);   //产生一个JSON格式的数组
//        [{"id":"1","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"2","name":"QIAOZHI","age":25,"address":"山西太原"},{"id":"3","name":"QIAOZHI","age":25,"address":"山西太原"}]
list = (List<User>) JSONArray.toList(jsonArray,User.class);
System.out.println(list);
//        [User [id=1, name=QIAOZHI, age=null, address=山西太原], User [id=2, name=QIAOZHI, age=null, address=山西太原], User [id=3, name=QIAOZHI, age=null, address=山西太原]]
System.out.println(list.get(1));
//        User [id=2, name=QIAOZHI, age=null, address=山西太原]
}
}


3.手动创建JSONObject与JSONArray(用于封装JSON转java对象与List集合)

package TestJson_JSONlib;

import org.junit.Test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class CreateJSONObject {

@Test
public void test1(){
//        手动创建一个JSONObject
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", "11");
jsonObject.put("name", "qiaozhi");
jsonObject.put("age", 30);
jsonObject.put("address", "山西太原");
System.out.println(jsonObject);
//        {"id":"11","name":"qiaozhi","age":30,"address":"山西太原"}

JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("id", "12");
jsonObject1.put("name", "qiaozhi");
jsonObject1.put("age", 30);
jsonObject1.put("address", "山西太原");
System.out.println(jsonObject1);
//        {"id":"12","name":"qiaozhi","age":30,"address":"山西太原"}

//        产生一个JSONArray
JSONArray jsonArray = new JSONArray();
jsonArray.add(jsonObject);
jsonArray.add(jsonObject1);
System.out.println(jsonArray);
//        [{"id":"11","name":"qiaozhi","age":30,"address":"山西太原"},{"id":"12","name":"qiaozhi","age":30,"address":"山西太原"}]

//        用上述方法转成Java对象与List集合,用于处理数据
}
}


可用于手动封装JSON对象。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: