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);
}
day30(对象转json(java))的更多相关文章
- json相关类库,java对象与json相互转换
有效选择七个关于Java的JSON开源类库 转自:http://www.open-open.com/lib/view/open1397870197828.html 翻译: (英语原文:http://w ...
- java对象与json串互转
1:java对象与json串转换: java对象—json串: JSONObject JSONStr = JSONObject.fromObject(object); String str = JSO ...
- 【JSON 注解】JSON循环引用2----JSON注解@JsonIgnoreProperties+JAVA关键字transient+后台对象与JSON数据的格式互相转化
接着来说这个JSON循环引用的问题: 关于JSON格式的转化,其实关键就是这几个依赖: <!-- json --> <!-- 1号 --> <dependency> ...
- Jackson转换对象为json的时候报java.lang.stackoverflowerror
无论在将一个对象转为json字符串的时候采用何种算法,如果你的对象的属性的类型不是基本类型或对应的引用类型,转换应该都不会就此结束,那么有一种方式可以导致这种转换陷入无限循环:将某个对象的属性设为对象 ...
- java对象与json对象间的相互转换
工程中所需的jar包,因为在网上不太好找,所以我将它放到我的网盘里了,如有需要随便下载. 点击下载 1.简单的解析json字符串 首先将json字符串转换为json对象,然后再解析json对象,过程如 ...
- JSON-lib框架,JAVA对象与JSON、XML之间的相互转换
Json-lib可以将Java对象转成json格式的字符串,也可以将Java对象转换成xml格式的文档,同样可以将json字符串转换成Java对象或是将xml字符串转换成Java对象. 一. 准备工作 ...
- 使用jackson对Java对象与JSON字符串相互转换的一些总结
本文为菠萝大象原创,如要转载请注明出处.http://www.blogjava.net/bolo 代码无真相,为了最简单的说明,我直接上代码. public class User { private ...
- net.sf.json在处理json对象转换为普通java实体对象时的问题和解决方案
我使用的net.sf.json是json-lib-2.4-jdk15.jar,把json对象转换为普通java实体对象时候有个问题,josn对象转换为java对象之后,json串里面的那几个小数点的值 ...
- java对象转json应clone,避免生成json串有问题
今天因为一个java对象转json,搞了我一下午,在些记录一下: 是这样:我在strtuts2的action中调用services返回 Row: 26, 中国银行海鹰, 29, 东楼, 36, 1F ...
随机推荐
- PHP开发——常见问题
执行顺序 常见数据类型 字符乱码
- Executors提供的四种线程池
Java 5+中的Executor接口定义一个执行线程的工具.它的子类型即线程池接口是ExecutorService.要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,因此在工具 ...
- 解决IDEA 配置搞坏的问题
如果我们把IDEA的配置给搞坏了,或者想重新配置,恢复到默认配置. 1.打开如下的目录(不同用户名目录有差异),如下所示: 2.删除掉config 和 system 目录,重新启动 IDEA会自动生成 ...
- UIDataPicker 时间选择器
自用时间选择器 @interface ViewController () { UILabel *cityLabel; UIDatePicker *datePicker; } //@property(n ...
- h5 微信分享朋友和朋友圈
生成JS-SDK权限验证签名 实现发送给朋友和分享到朋友圈时内容参数自定义 一.微信JS-SDK 1. 获得Access Token access token的获得方法在前面有介绍,详情见 微信公众平 ...
- C++连接MySQL(Windows)
一般来说,VS下采用微软自身的SQL Server是比较常见的做法,但SQL Server只适合学习,不适合真正应用.在此,我们选择MySQL作为后台数据库.C++语言本身并没有提供访问数据库的东西, ...
- Linux修改/etc/profile配置错误command is not found自救方法
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
- maven下的jar项目打包的方法
1.先对pom项目进行install: RunAs->maven install,如果出现如下错误: Failed to execute goal org.apache.maven.plugin ...
- BP神经网络的数学常识
输入数据X1-Xn. 输入层和隐层之间的权Wji 隐层的输入数据为:∑iwjixi 隐层的输出数据为:yj = f(∑iwjixi).其中f(x)= 隐层的输入数据为:∑jwkjyj 隐层的输出数据为 ...
- ubuntu新建、删除用户
新建用户名为newuser的用户,并赋予sudo权限 adduser newuser --ingroup sudo 删除用户以及用户目录 deluser -r newuser