有序的JSON如何实现,手写简单Demo
背景
在工作中,我遇到了一个比较不常见的接口要求, 需要我们的入参是有序的,因为我们用JSON底层都是Map,那么肯定是无须的,所以得手写一个有序JSON
使用案例
//创建对象
PowerJson powerJson = new PowerJson();
//放入key 和value
powerJson.put("xxx", "test");
//转成JSON字符串
Stirng needJson = powerJson.getJson();
有序JSON代码
import java.util.ArrayList;
import java.util.List;
public class PowerJson {
private List<String> params;
private List<String> values;
public PowerJson() {
this.params = new ArrayList<>();
this.values = new ArrayList<>();
}
public List<String> getParams() {
return params;
}
public void setParams(List<String> params) {
this.params = params;
}
public List<String> getValues() {
return values;
}
public void setValues(List<String> values) {
this.values = values;
}
public void put(String key, String value) {
params.add(key);
values.add(value);
}
public String getJson() {
String s = "\"";
String b = ":";
StringBuilder builder = new StringBuilder();
for (int i = 0; i < params.size(); i++) {
if (i == 0) {
builder.append("{");
}
//数组、对象等特殊处理
String value = values.get(i);
if (value.startsWith("{")) {
builder.append(s).append(params.get(i)).append(s).append(b).append(values.get(i));
} else {
//否则得加 “”
builder.append(s).append(params.get(i)).append(s).append(b).append(s).append(values.get(i)).append(s);
}
if (i != params.size() - 1) {
builder.append(",");
}
if (i == params.size() - 1) {
builder.append("}");
}
}
return builder.toString();
}
}
如果是JSON嵌套JSON,产生多余字符,用这个即可去除
` 如果你的JSON中存放的value 也是一个JSON字符串,那么会有多余的 \符号,这是需要手动去除的, 用下面这个代码就行了。
JSONArray array = new JSONArray();
array.add(powerJson.getJson());
//最外层data
JSONObject data = new JSONObject();
data.put("data", array);
// 去除JSON转字符串后的多余斜杠。
String replace = data.toString()
.replace("\\", "")
.replace("\"[\"", "[")
.replace("\"]\"", "]")
.replace("\"{", "{")
.replace("}\"", "}");
//返回值
return replace;
`

浙公网安备 33010602011771号