本文目錄一覽:
- 1、fastJson解析json對象
- 2、複雜json怎麼使用fastjson一次性提取出來
- 3、fastjson如何讀寫json文件
- 4、fastjson怎麼解析像「
- 5、FastJson和Json以及@ResponseBody
fastJson解析json對象
response回來的json如下
想拿到user_id,用fastJson來解析
user_id在user_list中,user_list在result中,result是一個json對象,user_list是一個array,利用fastJson將傳回來的response解析成一個類對象
checkBody類
複雜json怎麼使用fastjson一次性提取出來
JSON數據之使用Fastjson進行解析(一)
據說FastJson是目前最快的解析Json數據的庫,而且是國人開發出來的開源庫。頂一下,付上官方網址:h/code.alibabatech.com/wiki/pages/viewpage.action?pageId=2424946
要使用Fastjson,首先需要下載相對應的jar文件,在官網即可下載。
附上初學的第一個例子,多多指教:
複製代碼
{
“statuses”:[
{
“id”: 912345678901,
“text”: “How do I stream JSON in Java?”,
“geo”: null,
“user”: {
“name”: “json_newb”,
“followers_count”: 41
}
},
{
“id”: 777777777888,
“text”: “dfngsdnglnsldfnsl”,
“geo”: null,
“user”: {
“name”: “dsfgpd”,
“followers_count”: 24
}
}
]
}
複製代碼
AllBean的Bean類:
複製代碼
package com.lee.JsonToBean;
public class AllBean {
private long id;
private String text;
private String geo;
private UserBean userBean;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getGeo() {
return geo;
}
public void setGeo(String geo) {
this.geo = geo;
}
public UserBean getUserBean() {
return userBean;
}
public void setUserBean(UserBean userBean) {
this.userBean = userBean;
}
}
複製代碼
UserBean的Bean類:
複製代碼
package com.lee.JsonToBean;
public class UserBean {
private String name;
private int followers_count;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getFollowers_count() {
return followers_count;
}
public void setFollowers_count(int followers_count) {
this.followers_count = followers_count;
}
}
複製代碼
解析類JsonBean:
複製代碼
package com.lee.JsonToBean;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;
import javax.swing.text.BadLocationException;
import javax.swing.text.DefaultStyledDocument;
import javax.swing.text.rtf.RTFEditorKit;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* {
“statuses”:[
{
“id”: 912345678901,
“text”: “How do I stream JSON in Java?”,
“geo”: null,
“user”: {
“name”: “json_newb”,
“followers_count”: 41
}
},
{
“id”: 777777777888,
“text”: “dfngsdnglnsldfnsl”,
“geo”: null,
“user”: {
“name”: “dsfgpd”,
“followers_count”: 24
}
}
]
}
* */
public class JsonBean {
RTFEditorKit rtf;
DefaultStyledDocument dsd;
String text;
public static void main(String[] args) {
JsonBean bean = new JsonBean();
// 把字符串轉為Json對象,這是因為我的json數據首先是json對象
JSONObject jobj = JSON.parseObject(bean.readRtf(new File(“json.rtf”)));
// 然後是jsonArray,可以根據我的json數據知道
JSONArray arr = jobj.getJSONArray(“statuses”);
// 根據Bean類的到每一個json數組的項
ListAllBean listBeans = JSON.parseArray(arr.toString(), AllBean.class);
// 遍歷
for(AllBean bean_ : listBeans){
// 我這個demo的json數據獲得第一層的數據
System.out.println(bean_.getText());
System.out.println(bean_.getId());
// 我這個demo的json數據獲得第二層的數據
System.out.println(bean_.getUserBean().getFollowers_count());
}
}
// 因為我把json數據放進rtf文件,這是讀取rtf文件的json數據,轉化為字符串
public String readRtf(File in) {
rtf=new RTFEditorKit();
dsd=new DefaultStyledDocument();
try {
rtf.read(new FileInputStream(in), dsd, 0);
text = new String(dsd.getText(0, dsd.getLength()));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return text;
}
}
fastjson如何讀寫json文件
publicstaticfinalTTparseObject(Stringtext,ClassTclazz);//把 JSON 文本 parse 為 JavaBean
publicstaticfinalJSONArrayparseArray(Stringtext);//把 JSON 文本 parse 成 JSONArray
publicstaticfinalTListTparseArray(Stringtext,ClassTclazz);//把 JSON 文本 parse 成 JavaBean 集合
publicstaticfinalStringtoJSONString(Objectobject);//將 JavaBean 序列化為 JSON 文本
publicstaticfinalStringtoJSONString(Objectobject,booleanprettyFormat);//將 JavaBean 序列化為帶格式的 JSON 文本
publicstaticfinalObjecttoJSON(ObjectjavaObject);將 JavaBean 轉換為 JSONObject 或者 JSONArray 。
在網上搜的api,你可以動手試試,總在fastJSON很好很強大!
fastjson怎麼解析像「
1. fastjson生成和解析json數據
(舉例:4種常用類型:JavaBean,ListJavaBean,ListString,ListMapString,Object)
2.通過一個android程序測試fastjson的用法。
fastjson簡介:
Fastjson是一個Java語言編寫的高性能功能完善的JSON庫。fastjson採用獨創的算法,將parse的速度提升到極致,超過所有json庫,包括曾經號稱最快的jackson。並且還超越了google的二進制協議protocol buf。Fastjson完全支持son.org的標準,也是官方網站收錄的參考實現之一。支持各種JDK類型。包括基本類型、JavaBean、Collection、Map、Enum、泛型等。支持JDK 5、JDK 6、Android、阿里雲手機等環境。
一. fastjson生成json字符串(JavaBean,ListJavaBean,ListString,ListMapString,Object)
String jsonStrng = JSON.toJSONString(object);
二. fastjson 解析json字符串為四種類型
1. JavaBean
Person person = JSON.parseObject(jsonString, Person.class);
2. ListJavaBean
ListPerson listPerson =JSON.parseArray(jsonString, Person.class);
3. ListString
ListString listString = JSON.parseArray(jsonString, String.class);
4. ListMapString,Object
ListMapString, Object listMap = JSON.parseObject(jsonString, new TypeReferenceListMapString,Object(){}); (注意:此處可看出fastjson反射機制比gson更準確, id = 1001 通過fastjson反射仍是 id = 1001 , 而通過gson反射結果 為 id =1001.0
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);
原創文章,作者:BTVI2,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/127560.html