转换之前需要知道什么是json
json类似于map集合:键值对的方式存在,是一种轻量级数据交互格式。
eg:
{name:" ",age:15}
[{name:" ",age:15},{name:" ",age:15}]
使用工具生成json
JsonLib来转换对象
JsonArray 将数组或集合转化为json
JSONObject 将对象装换为json格式
依赖的java包
编写一个javabean
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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 + "]" ; } } |
测试类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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()); } } |
输出结果:
1 | [{ "id" : 11 , "name" : "风清扬" },{ "id" : 12 , "name" : "小师妹" }] |
测试类:(过滤id)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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()); } } |
输出结果:
1 | [{ "name" : "风清扬" },{ "name" : "小师妹" }] |
使用阿里巴巴的jar包 fastjson.jar
测试类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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); } } |
输出结果:
1 | [{ "id" : 11 , "name" : "风清扬" },{ "id" : 12 , "name" : "小师妹" }] |
使用过滤器(过滤id)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 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); } } |
输出结果:
1 | [{ "name" : "风清扬" },{ "name" : "小师妹" }] |
细致过滤某个值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | @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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @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); } |
输出结果:
1 | [{ "id" :11, "name" : "风清扬" },{ "id" :12, "name" : "小师妹" }] |
对某个字段进行格式化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | @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); } |
使用过滤器进行对字段进行过滤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @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); } |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步