利用Java bean类处理复杂json串
最近在做一个项目时,需要用Java去处理json串,需要处理的json比较复杂,但是用这种方法,就很简单。直接说用法。
处理的json串形式如下:
{
"name":"test",
"url":"http://www.bejson.com",
"page":88,
"isNonProfit":true,
"input":{
"inputval":"1",
"inputvalue":"2"
},
"output":{
"R":"0",
"R1":"0"
},
"opations":[
{
"symbol":"=",
"inputparameters":{
"p1":"inputval"
},
"outparameters":{
"P1":"R"
}
},
{
"symbol":"+",
"inputparameters":{
"p1":"inputval",
"p2":"inputvalue"
},
"outparameters":{
"p1":"R1"
}
}
]
}
根据这个json串编写Java 配置类。如果json串中有[]数组形式的建议用list处理。具体实现类如下
package com.symbol.bean;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
import java.util.Map;
/**
* 指令配置类
*/
public class Program {
private String name;
private String url;
private String page;
private String isNonProfit;
private Map<String, String> input;
private Map<String, String> output;
private List<Opation> opations;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public String getIsNonProfit() {
return isNonProfit;
}
public void setIsNonProfit(String isNonProfit) {
this.isNonProfit = isNonProfit;
}
public Map<String, String> getInput() {
return input;
}
public void setInput(Map<String, String> input) {
this.input = input;
}
public Map<String, String> getOutput() {
return output;
}
public void setOutput(Map<String, String> output) {
this.output = output;
}
public List<Opation> getOpations() {
return opations;
}
public void setOpations(List<Opation> opations) {
this.opations = opations;
}
}
因为opations是数组形式有多个json体,所以我用了List ,同时opations需要单独在写一个Java 配置类,具体如下
package com.symbol.bean;
import lombok.Getter;
import lombok.Setter;
import java.util.Map;
/**
* 执行操作步骤配置文件
*/
public class Opation {
private String symbol;
private Map<String, String> inputparameters;
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public Map<String, String> getInputparameters() {
return inputparameters;
}
public void setInputparameters(Map<String, String> inputparameters) {
this.inputparameters = inputparameters;
}
public Map<String, String> getOutparameters() {
return outparameters;
}
public void setOutparameters(Map<String, String> outparameters) {
this.outparameters = outparameters;
}
private Map<String, String> outparameters;
}
以上就根据json串的形式配好了配置类
之后就把json串进行处理
导入<dependency>
依赖
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.32</version>
</dependency>
在新建类里执行
//把字符串转换成json对象
JSONObject jsonObject = JSONObject.parseObject(instruction);
//根据配置类读取json对象的值
Program program = JSONObject.toJavaObject(jsonObject, Program.class);
这样,就把json串中的各个属性值填充到配置类中了,你下面直接调用就可以取到数据了
例如:
program.getOpations().size()
以上就是读取处理json串的方法了,还可以进行set操作,修改json串的值