欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JSON(2)_JSON 在 java 代码中的处理

程序员文章站 2024-01-15 16:52:34
...

本系列博客汇总在这里:JSON 汇总


一、关于 json-lib?

JSON-lib 是一个 java 类库。用于转换 javabeans, maps, collections, java arrays 和 XML 成为 json 格式数据 ;以及转换 json 格式数据成为 javabeans 对象。

需要 jar 包

  • jakarta commons-lang 2.5
  • jakarta commons-beanutils 1.8.0
  • jakarta commons-collections 3.2.1
  • jakarta commons-logging 1.1.1
  • ezmorph 1.0.6
    JSON(2)_JSON 在 java 代码中的处理
    JSON(2)_JSON 在 java 代码中的处理

二、将 JavaBean/Map 解析成 JSON 串

package cn.wyx.json;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import cn.wyx.model.Person;
import net.sf.json.JSONObject;
public class Demo1
{
	public static void main(String[] args)
	{
		Map<String, Object> map = new HashMap<String, Object>();
		map.put("name", "魏宇轩1");
		map.put("age", 12);
		map.put("address", "昆明");
		Person p = new Person("魏宇轩2", 28, new Date(), "北京");
		map.put("person", p);
		
		//把map转换成json对象
		JSONObject obj = JSONObject.fromObject(map);
		//把json对象转换成字符串
		String result = obj.toString();
		System.out.println(result);
	}
}

JSON(2)_JSON 在 java 代码中的处理

三、将 Array 和集合解析成 json 串

package cn.wyx.json;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.sf.json.JSONArray;
import cn.wyx.model.Person;
public class Demo3
{
	public static void main(String[] args)
	{
		Person p = new Person("魏宇轩1", 28, new Date(), "昆明");
		// String[] names = {"刘备", "关羽", "张飞"};
		// Object [] objs = {p, "诸葛亮", 23};
		List list = new ArrayList();
		list.add(p);
		list.add("魏宇轩");
		list.add(53);
		JSONArray obj = JSONArray.fromObject(list);
		String result = obj.toString();
		System.out.println(result);
	}
}

JSON(2)_JSON 在 java 代码中的处理

四、使用 JsonConfig 过虑属性

package cn.wyx.json;
import java.util.Date;

import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import cn.wyx.model.Person;
public class Demo2
{
	public static void main(String[] args)
	{
		Person p = new Person("魏宇轩", 18, new Date(), "昆明");
		JsonConfig jc = new JsonConfig(); 
		//在指定转换时不包含哪些属性
		String[] attrs ={"birthday"}; 
		jc.setExcludes(attrs);
		//把map转换成json对象
		JSONObject obj = JSONObject.fromObject(p,jc);
		// 把json对象转换成字符串
		String result = obj.toString();
		System.out.println(result);
	}
}

JSON(2)_JSON 在 java 代码中的处理

五、将 json 串转成 JavaBean/Map

package cn.wyx.json;
import java.util.Map;
import net.sf.json.JSONObject;
import cn.wyx.model.Person;
public class Demo4
{
	public static void main(String[] args)
	{
		String str = "{\"address\":\"昆明\",\"age\":28,\"birthday\":{\"date\":8,\"day\":6,\"hours\":16,\"minutes\":14,\"month\":9,\"seconds\":11,\"time\":1475914451915,\"timezoneOffset\":-480,\"year\":116},\"name\":\"魏宇轩\"}";
		/*
		 * //创建jsonConfig JsonConfig jc = new JsonConfig(); //设置要转换的类
		 * jc.setRootClass(Person.class);
		 */
		JSONObject obj = JSONObject.fromObject(str);
		Person p = (Person) JSONObject.toBean(obj, Person.class);
		System.out.println(p);
		System.out.println("---------------------------------");
		Map m = (Map) JSONObject.toBean(obj, Map.class);
		System.out.println(m);
	}
}

JSON(2)_JSON 在 java 代码中的处理

六、将字符串转换成集合

package cn.wyx.json;
import java.util.List;
import net.sf.json.JSONArray;
import net.sf.json.JSONSerializer;
import net.sf.json.JsonConfig;
import cn.wyx.model.Person;
public class Demo5
{
	public static void main(String[] args)
	{
		/*
		 * List<Person> pList = new ArrayList<Person>(); 
		 * for(int i = 0; i < 5;i++)
		 * { 
		 * 	Person p = new Person(\"魏宇轩\"+i,28, new Date(), \"昆明\");
		 * 	pList.add(p); 
		 * }
		 * JSONArray ja = JSONArray.fromObject(pList); 
		 * String result =ja.toString(); 
		 * System.out.println(result);
		 */

		String str = "[{\"address\":\"昆明\",\"age\":28,\"birthday\":{\"date\":8,\"day\":6,\"hours\":16,\"minutes\":24,\"month\":9,\"seconds\":34,\"time\":1475915074368,\"timezoneOffset\":-480,\"year\":116},\"name\":\"魏宇轩0\"},{\"address\":\"昆明\",\"age\":28,\"birthday\":{\"date\":8,\"day\":6,\"hours\":16,\"minutes\":24,\"month\":9,\"seconds\":34,\"time\":1475915074368,\"timezoneOffset\":-480,\"year\":116},\"name\":\"魏宇轩1\"},{\"address\":\"昆明\",\"age\":28,\"birthday\":{\"date\":8,\"day\":6,\"hours\":16,\"minutes\":24,\"month\":9,\"seconds\":34,\"time\":1475915074368,\"timezoneOffset\":-480,\"year\":116},\"name\":\"魏宇轩2\"},{\"address\":\"昆明\",\"age\":28,\"birthday\":{\"date\":8,\"day\":6,\"hours\":16,\"minutes\":24,\"month\":9,\"seconds\":34,\"time\":1475915074368,\"timezoneOffset\":-480,\"year\":116},\"name\":\"魏宇轩3\"},{\"address\":\"昆明\",\"age\":28,\"birthday\":{\"date\":8,\"day\":6,\"hours\":16,\"minutes\":24,\"month\":9,\"seconds\":34,\"time\":1475915074368,\"timezoneOffset\":-480,\"year\":116},\"name\":\"魏宇轩4\"}]";
		JSONArray ja = JSONArray.fromObject(str);
		// 创建json配置对象
		JsonConfig jc = new JsonConfig();
		// 设置json的要转换的类
		jc.setRootClass(Person.class);
		List<Person> pList = (List<Person>) JSONSerializer.toJava(ja, jc);
		/*
		 * for(int i = 0; i < pList.size(); i++)
		 * { 
		 * 	Person person = pList.get(i);
		 * 	System.out.println(person); 
		 * }
		 */
		for (Person p : pList)
		{
			System.out.println(p.getName());
		}
		// System.out.println(pList);
	}
}

JSON(2)_JSON 在 java 代码中的处理
如有错误,欢迎指正!