day30(对象转json(java))

转换之前需要知道什么是json

  json类似于map集合:键值对的方式存在,是一种轻量级数据交互格式。

  eg:     

    {name:" ",age:15}

    [{name:" ",age:15},{name:" ",age:15}]

使用工具生成json

  JsonLib来转换对象

      JsonArray 将数组或集合转化为json

      JSONObject 将对象装换为json格式

    依赖的java包

                           

    编写一个javabean

    

package com.baidu;

public class User {
	private int id;
	private String name;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + "]";
	}
	
}

    测试类:

package com.baidu;

import java.util.ArrayList;
import net.sf.json.JSONArray;

public class Demo {
	public static void main(String[] args) {
		User u=new User();
		u.setId(11);
		u.setName("风清扬");
		User u1=new User();
		u1.setId(12);
		u1.setName("小师妹");
		ArrayList<User> array=new ArrayList<User>();
		array.add(u);
		array.add(u1);
		JSONArray fromObject = JSONArray.fromObject(array);
		System.out.println(fromObject.toString());
	}
}

  输出结果:

[{"id":11,"name":"风清扬"},{"id":12,"name":"小师妹"}]

  测试类:(过滤id)

package com.baidu;

import java.util.ArrayList;
import net.sf.json.JSONArray;
import net.sf.json.JsonConfig;

public class Demo {
	public static void main(String[] args) {
		User u=new User();
		u.setId(11);
		u.setName("风清扬");
		User u1=new User();
		u1.setId(12);
		u1.setName("小师妹");
		ArrayList<User> array=new ArrayList<User>();
		array.add(u);
		array.add(u1);
		JsonConfig js=new JsonConfig();
		js.setExcludes(new String[]{"id"});
		JSONArray fromObject = JSONArray.fromObject(array,js);
		System.out.println(fromObject.toString());
	}
}

  输出结果:

[{"name":"风清扬"},{"name":"小师妹"}]

  使用阿里巴巴的jar包  fastjson.jar

  测试类

package com.baidu;

import java.util.ArrayList;

import com.alibaba.fastjson.JSON;


public class Demo {
	public static void main(String[] args) {
		User u=new User();
		u.setId(11);
		u.setName("风清扬");
		User u1=new User();
		u1.setId(12);
		u1.setName("小师妹");
		ArrayList<User> array=new ArrayList<User>();
		array.add(u);
		array.add(u1);
		String arr = JSON.toJSONString(array);
		System.out.println(arr);
	}
}

  输出结果:

[{"id":11,"name":"风清扬"},{"id":12,"name":"小师妹"}]

  使用过滤器(过滤id)

package com.baidu;

import java.util.ArrayList;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
import com.alibaba.fastjson.serializer.SimplePropertyPreFilter;


public class Demo {
	public static void main(String[] args) {
		User u=new User();
		u.setId(11);
		u.setName("风清扬");
		User u1=new User();
		u1.setId(12);
		u1.setName("小师妹");
		ArrayList<User> array=new ArrayList<User>();
		array.add(u);
		array.add(u1);
		//需要什麼写什么
		SimplePropertyPreFilter sdfs=new SimplePropertyPreFilter(User.class,"name");
		String arr = JSON.toJSONString(array,sdfs);
		System.out.println(arr);
	}
}

  输出结果:

[{"name":"风清扬"},{"name":"小师妹"}]

  细致过滤某个值

@Test
	public void JsonTest1(){
			User u=new User();
	        u.setId(11);
	        u.setName("风清扬");
	        User u1=new User();
	        u1.setId(12);
	        u1.setName("小师妹");
	        ArrayList<User> array=new ArrayList<User>();
	        array.add(u);
	        array.add(u1);
	        SerializeFilter sf=new PropertyFilter() {//具体的过滤器
				@Override
				public boolean apply(Object object, String name, Object value) {
					/*if("小师妹".equals(value)){
						return false;
					}*/
					System.out.println(object);//表示json对象
					System.out.println(name);//表示字段
					System.out.println(value);//表示字段的值
					return true;
				}
			};
			String arr = JSON.toJSONString(array,sf);
		     //System.out.println(arr);
	}

  使用Jockson

  

      @Test
	  public void JsonTest1() throws JsonGenerationException, JsonMappingException, IOException{
		User u=new User();
	        u.setId(11);
	        u.setName("风清扬");
	        User u1=new User();
	        u1.setId(12);
	        u1.setName("小师妹");
	        ArrayList<User> array=new ArrayList<User>();
	        array.add(u);
	        array.add(u1);
	        ObjectMapper om=new ObjectMapper();
		String strjson = om.writeValueAsString(array);
		System.out.println(strjson);  
	    }

  输出结果:

[{"id":11,"name":"风清扬"},{"id":12,"name":"小师妹"}]

  对某个字段进行格式化

@Test
	public void JsonTest1() throws JsonGenerationException, JsonMappingException, IOException{
			User u=new User();
	        u.setId(11);
	        u.setName("风清扬");
	        User u1=new User();
	        u1.setId(12);
	        u1.setName("小师妹");
	        ArrayList<User> array=new ArrayList<User>();
	        array.add(u);
	        array.add(u1);
	        ObjectMapper om=new ObjectMapper();
	        om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));//设置日期格式化器
		String strjson = om.writeValueAsString(array);
		System.out.println(strjson);  
	}

  使用过滤器进行对字段进行过滤

    

    @Test
	public void JsonTest1() throws JsonGenerationException, JsonMappingException, IOException{
			User u=new User();
	        u.setId(11);
	        u.setName("风清扬");
	        User u1=new User();
	        u1.setId(12);
	        u1.setName("小师妹");
	        ArrayList<User> array=new ArrayList<User>();
	        array.add(u);
	        array.add(u1);
	        ObjectMapper om=new ObjectMapper();
	        //处理过滤属性
	        	//只显示这个属性
	        //[{"id":11},{"id":12}]
	        FilterProvider f=new SimpleFilterProvider().addFilter("UserFilter",SimpleBeanPropertyFilter.filterOutAllExcept("id"));
	        //[{"name":"风清扬"},{"name":"小师妹"}]  不包含这个属性
	        //FilterProvider f=new SimpleFilterProvider().addFilter("UserFilter",SimpleBeanPropertyFilter.serializeAllExcept("id"));
			
	        om.setFilters(f);
		String strjson = om.writeValueAsString(array);
		System.out.println(strjson);  
	}

  

原文地址:https://www.cnblogs.com/fjkgrbk/p/json_java.html