做个小笔记,通过RPC调用第三方接口返回一个字符串格式的json
{"error":"0","error_description":"success","body":{"access_token":"369a3819da3c457e9ff9a5e8a660a2ec","refresh_token":"ebfd3fcf543345eebd3ee53e0ef34c67","machine_code":"","expires_in":2592000,"scope":"all"}}
使用工具CoolFormat.exe
输出格式化,如下
{
"body" : {
"access_token" : "369a3819da3c457e9ff9a5e8a660a2ec",
"expires_in" : 2592000,
"machine_code" : "",
"refresh_token" : "ebfd3fcf543345eebd3ee53e0ef34c67",
"scope" : "all"
},
"error" : "0",
"error_description" : "success"
}
解析1
引入依赖json-lib
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.2</version>
<classifier>jdk15</classifier>
</dependency>
通过java进行处理
import net.sf.json.JSONObject;
import org.testng.annotations.Test;
public class JsonStrAnalysis {
@Test
public void testJsonString() {
String objectStr = "{\"error\":\"0\",\"error_description\":\"success\",\"body\":{\"access_token\":\"369a3819da3c457e9ff9a5e8a660a2ec\",\"refresh_token\":\"ebfd3fcf543345eebd3ee53e0ef34c67\",\"machine_code\":\"\",\"expires_in\":2592000,\"scope\":\"all\"}}";
JSONObject jsonObject = JSONObject.fromObject(objectStr);
System.out.println(jsonObject);
System.out.println(jsonObject.get("error"));
System.out.println(jsonObject.get("error_description"));
}
}
打印,如下:
{"error":"0","error_description":"success","body":{"access_token":"369a3819da3c457e9ff9a5e8a660c2ec","refresh_token":"ebfd3fcf543345eebd3ee53e0ef34cd7","machine_code":"","expires_in":2592000,"scope":"all"}}
0
success
===============================================
Default Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
Process finished with exit code 0
解析2
使用idea插件GsonFormat
插件,快捷Alt+Insert
,生成一个实体类
package com.pig4cloud.gson.pojo;
/**
* @author Lucky
* @date 2020-06-28
* @Description //TODO
*/
public class GsonBody {
/**
* body : {"access_token":"369a3812da3c457e9ff9a5e8a660c2ec","expires_in":2592000,"machine_code":"","refresh_token":"ebfd3fcf543345eebd3ee53e65f34cd7","scope":"all"}
* error : 0
* error_description : success
*/
private BodyBean body;
private String error;
private String error_description;
// Get and Set 补充
public static class BodyBean {
/**
* access_token : 369a3819da3c457e9ff9a5e8a660a2ec
* expires_in : 2592000
* machine_code :
* refresh_token : ebfd3fcf543445eebd3ee53e0ef34c67
* scope : all
*/
private String access_token;
private int expires_in;
private String machine_code;
private String refresh_token;
private String scope;
// Get and Set 补充
@Override
public String toString() {
return "BodyBean{" +
"access_token='" + access_token + '\'' +
", expires_in=" + expires_in +
", machine_code='" + machine_code + '\'' +
", refresh_token='" + refresh_token + '\'' +
", scope='" + scope + '\'' +
'}';
}
}
@Override
public String toString() {
return "GsonBody{" +
"body=" + body +
", error='" + error + '\'' +
", error_description='" + error_description + '\'' +
'}';
}
}
然后,解析如下:
通过java进行处理
```java
import net.sf.json.JSONObject;
import org.testng.annotations.Test;
public class JsonStrAnalysis {
@Test
public void testJson2Obj() {
String objectStr = "{\"error\":\"0\",\"error_description\":\"success\",\"body\":{\"access_token\":\"369a3819da3c457e9ff9a5e8a660c2ec\",\"refresh_token\":\"ebfd3fcf543345eebd3ee53e0ef34cd7\",\"machine_code\":\"\",\"expires_in\":2592000,\"scope\":\"all\"}}";
JSONObject jsonObject = JSONObject.fromObject(objectStr);
//1、使用JSONObject
GsonBody gsonBody = (GsonBody) JSONObject.toBean(jsonObject, GsonBody.class);
System.out.println(gsonBody.toString());
System.out.println(gsonBody.getBody().toString());
}
}
结果打印:
GsonBody{body=BodyBean{access_token='369a3819da3c457e9ff9a5e8a660c2ec', expires_in=2592000, machine_code='', refresh_token='ebfd3fcf543345eebd3ee53e0ef34cd7', scope='all'}, error='0', error_description='success'}
BodyBean{access_token='369a3819da3c457e9ff9a5e8a660c2ec', expires_in=2592000, machine_code='', refresh_token='ebfd3fcf543345eebd3ee53e0ef34cd7', scope='all'}
===============================================
Default Suite
Total tests run: 1, Passes: 1, Failures: 0, Skips: 0
===============================================
Process finished with exit code 0