本文目录一览:
- 1、android怎么将javabean转换成json
- 2、java中一个包含bean属性的list集合 如何转换成JSON
- 3、带有对象属性的bean,如何转换成json对象或者字符串
- 4、FastJson和Json以及@ResponseBody
android怎么将javabean转换成json
前提条件是javaBean必须有getter和setter方法而且,必须有无参的构造方法
package com.cn.parse_json;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.lang.reflect.Field;
import org.json.JSONObject;
import android.os.Environment;
import android.util.Log;
import android.widget.Toast;
public class ParseJson2BeanUtils {
public static T T parseJson2Bean(JSONObject object,ClassT clazz ) throws Exception{
FileInputStream fis = new FileInputStream("/mnt/sdcard/json.txt");
int len = fis.available();
byte[] buffer = new byte[len];
fis.read(buffer);
object = new JSONObject(new String(buffer));
T newInstance = null;
Field[] fields = clazz.getFields();
//只要保证clazz有一个无参的public构造方法就不可能发生异常
try {
newInstance = clazz.newInstance();
} catch (Exception e) {
e.printStackTrace();
}
for(int i = 0;i fields.length;i++){
String name = fields[i].getName();
//不可能发生的异常
try {
String jsonName = name.replaceFirst(name.substring(0, 1), name.substring(0, 1).toUpperCase());
if(object.has(jsonName)){
if(jsonName.equals("ResultCode")){
fields[i].set(newInstance, object.getInt(jsonName));
}else{
fields[i].set(newInstance, object.getString(jsonName));
}
Log.i("name", name+"****");
}
//Log.i("name", jsonName+":"+object.has(jsonName)+object.getString(jsonName));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return newInstance;
}
}
java中一个包含bean属性的list集合 如何转换成JSON
java中的list是数组的变形,换句话说,list就是可变换长度的数组。因此java中的list转换成JSON后就成了JSON中的数组;
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
java中将一个java对象转换成一个json,如果要去实现的话,比较麻烦,当下有很多java对象与json字符串之间转换的工具,例如google的开源工具Gson(jar包),通过它就可以直接将java对象作为入参传进去,返回一个json字符串。
带有对象属性的bean,如何转换成json对象或者字符串
fastjson转化如下:
public class Userinfo {
private String username;
private String password;
private Address address;
//省略相应的get/set方法
}
//json转化单个对象
Userinfo userinfo = JSON.parseObject(jsonString, Userinfo.class);
//json转化为多个对象
ListUserinfo list = JSON.parseArray(jsonString, Userinfo.class);
对象转化为JSON
JSON json = JSON.toJSON(userinfo);
FastJson和Json以及@ResponseBody
@Restcontroller是@Controller和@ResponseBody的结合体,将后台返回的Java对象转换为Json字符串传递给前台。它是springmvc通过配置MappingJackson2HttpMessageConverter实现的,spring默认带的转json包为jackson,因为fastJson比较快一般会引入fastjson来替换。
解决bean与json字段不一致问题,或者字段定义不符合前端所需要的标准,需要使用@JsonProperty和@JSONField注解。
@jsonProperty是Jackson的包,@JSONproperty这个注解用于属性上面
而@jsonfield是fastjson的包,@JSONField这个注解可以用于get、set以及属性上面@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")是时间的格式化,可以用于get、set以及属性上面
FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。FastJson的API十分简洁,FastJson重要的类为JSONObject,经常调用的方法如下:
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final T parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final List parseArray(String text, Class clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。
Jackson相对来说比较高效的Json类库,在项目中主要使用Jackson进行JSON和Java对象转换,Jackson ObjectMapper类是使用Jackson解析JSON最简单的方法。可以从字符串、流或文件解析JSON,并创建Java对象或对象图来表示已解析的JSON。将JSON解析为Java对象也称为从JSON反序列化Java对象
1.JAVA对象转JSON
ObjectMapper mapper = new ObjectMapper();
String bjectMapper = mapper.writeValueAsString(obj);
2.JSON转Java类[JSON反序列化]
ObjectMapper mapper = new ObjectMapper();
HashMapString, Object inMap = mapper.readValue(jsonStr, HashMap.class);