本文目錄一覽:
- 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);
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/249889.html