有两种方法实现:
(1)直接转换:
创建JSONArray对象、JSONObject对象,通过put方法将其数据以键值对的形式填充,如例:
//假如有一个Java实体类Person,包括以下属性:phone、sex、married、address。
ArrayList<Person> persons = new ArrayList<Person>();。
for (int i = 0; i < 3; i++) {。
persons.add(new Person("138******67", "女", true, "北京朝阳区"));//填充Java实体类集合。
JSONArray array = new JSONArray();// Json格式的数组形式。
JSONObject obj;//json格式的单个对象形式。
for (int i = 0; i < persons.size(); i++) {。
obj = new JSONObject();。
//依次填充每一个Java实体对象。
try {
obj.put("phone", persons.get(i).getPhone());//json通过put方式以key-value形式填充。
obj.put("sex", persons.get(i).getSex());。
obj.put("married", persons.get(i).getMarried());。
obj.put("address", persons.get(i).getAddress());。
array.put(obj);//将JSONObject添加入JSONArray。
} catch (JSONException e) {。
e.printStackTrace();。
(2)通过GSON工具实现:
只需要创建GSON对象,通过toJson方法转换即可。如例:
//模拟Java数据
Person person = new Person("敏敏", 23, "女", "北京市海淀区");。
//创建GSON对象
Gson gson = new Gson();。
//调用toJson方法即可转换为字符串的json格式。
String json = gson.toJson(person);。
JSONObject在JAVA中其实就相当于Map, 可以通过key取到值;
而JAVA对象,一般是JAVA中的model或者domain 模型对象, 这种对象代表的是一个业务的模型,是有明确的意义的, 包括里面的属性类型都是明确定义;
转换成对象之后,操作其中的值就可以用getter,setter方法明确指定, 一般其他人使用的时候也能知道里面有什么,而如果只有一个JSONObject, 使用的时候除了先在控制台输入里面的内容是不知道里面有什么的, 并不适合在JAVA方法中的数据传递使用。
1、需要json的相关jar包。
2、设置json格式字符串:
String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";。
3、建立相应的类:
public class StudentList {。
List<Student> student;。
public List<Student> getStudent() {。
return student;。
public void setStudent(List<Student> student) {。
this.student = student;。
}
public class Student {。
private String name;。
private int age;。
//private StudentClass studentClass;。
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;。
4、测试程序
import java.util.List;。
import org.codehaus.jackson.map.ObjectMapper;。
public class JsonToJavaBean {。
public static void main(String[] args) {。
String str="{\"student\":[{\"name\":\"leilei\",\"age\":23},{\"name\":\"leilei02\",\"age\":23}]}";。
Student stu = null;。
List<Student> list = null;。
try {
ObjectMapper objectMapper=new ObjectMapper();。
StudentList studentList=objectMapper.readValue(str, StudentList.class);。
list=studentList.getStudent();。
} catch (Exception e) {。
// TODO Auto-generated catch block。
e.printStackTrace();。
for(Student s:list){。
System.out.println(s.getName());。
导入Google的包gson-2.2.4.jar。
然后实例化Gson
static Gson gosn = new Gson();。
String json = gosn.toJson(hashMap); //这里放一个对象,什么对象都可以。
转化后就是Json,功能强大很多,也简单很多。
json-lib-2.4-jdk15.jar。
ezmorph-1.0.6.jar 。
转换的话这样用
String s= JSONArray.fromObject(user).toString();。
spring-webmvc4
在方法上加入@ResponseBody,同时方法返回值为实体对象,spring会自动将对象转换为json格式,并返回到客户端。
我的object-json方法是自己实现的,其中可以对Long数组进行特殊处理,你代码中的JSONObject如果不便于修改的话,你可以把Long数组改成List<Long>试试,如果不行只能自己扩展一下了。
原文地址:http://www.qianchusai.com/json%E5%92%8Cjava%E7%B1%BB%E4%BA%92%E8%BD%AC%E5%8E%9F%E7%90%86.html