使⽤Gson将字符串转换成JsonObject和JsonArray ⽬录
Gson将字符串转JsonObject和JsonArray
以下均利⽤Gson来处理
JSONObject与JSON互转
引⼊ jar , 此处引⼊ com.alibaba.fastjson 版本的jar包
建⽴测试类对象
转换
Gson将字符串转JsonObject和JsonArray
以下均利⽤Gson来处理
1.将bean转换成Json字符串:
public static String beanToJSONString(Object bean) {
return new Gson().toJson(bean);
}
2.将Json字符串转换成对象:
public static Object JSONToObject(String json,Class beanClass) {
Gson gson = new Gson();
Object res = gson.fromJson(json, beanClass);
return res;
}
object to注:转换后的对象使⽤前进⾏强转:例如bean bean1 = (bean)FormatUtil.JSONToObject(json, bean.class);
3.将Json字符串转换成JsonObject对象:
JsonObject returnData = new JsonParser().parse(jsonstr).getAsJsonObject();
4.将JsonArray类型的Json字符串解析成对象⽅法
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonArray Jarray = parser.parse(jstring).getAsJsonArray();
ArrayList<channelSearchEnum> lcs = new ArrayList<channelSearchEnum>();
for(JsonElement obj : Jarray ){
channelSearchEnum cse = gson.fromJson( obj , channelSearchEnum.class);
lcs.add(cse);
}
或者
String json = "[{\"username\":\"test\"},{\"username\":\"test2\"}]";
System.out.println(new JsonParser().parse(json).getAsJsonArray().get(0).getAsJsonObject().get("username").getAsString());
5.获取JsonObject中指定key值对应的JsonArray对象:
String json= "{\"pids\":[\"1\",\"2\",\"3\"]}";
System.out.println(new JsonParser().parse(json).getAsJsonObject().getAsJsonArray("pids").get(0).getAsString()); JSONObject与JSON互转
使⽤⽬的
⽬前数据交互⼤多以 JSON 字符串为信息传输,主要格式有
{"age":"22","name":"李四"}
[{"age":"21","name":"张三"}]
最常见的应⽤场景是前后端对接,第三⽅平台⽂档对接,下⾯展⽰转换使⽤。引⼊ jar , 此处引⼊ com.alibaba.fastjson 版本的jar包
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.31</version>
</dependency>
建⽴测试类对象
class Student {
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
转换
1、对象转 JSON
Student stu1 = new Student();
stu1.setName("张三");
stu1.setAge("21");
String stu1Json = JSONString(stu1);
输出:
{"age":"21","name":"张三"}
2、JSON 转对象
Student stu1to = JSON.parseObject(stu1Json, Student.class);
System.out.println("json 转对象:");
System.out.println(stu1to);
System.out.Name());
System.out.Age());
输出:
json 转对象:
Student@2aae9190
张三
21
注:JSON键名要与对象属性名相对应
3、对象数组转 JSON
Student stu2 = new Student();
stu2.setName("李四");
stu2.setAge("22");
List<Student> list = new ArrayList<Student>();
list.add(stu1);
list.add(stu2);
String listJson = JSONString(list);
System.out.println(listJson);
输出:
[{"age":"21","name":"张三"},{"age":"22","name":"李四"}]
4、JSON 转对象数组
List<Student> studentList = JSON.parseArray(listJson, Student.class);
for (Student student : studentList) {
System.out.Name());
}
输出:
json 数组格式转换对象
张三
李四
5、JSON多级组合,适⽤于请求⽂档传输参数
JSONObject jsona = new JSONObject();
jsona.put("number", "1");
JSONObject jsonb = new JSONObject();
jsonb.put("listMap", list);
JSONObject jsonAll = new JSONObject();
jsonAll.put("jsona", jsona);
jsonAll.put("jsonb", jsonb);
String jsonAllStr =JSONString(jsonAll);
System.out.println(jsonAllStr);
输出:
{"jsona":{"number":"1"},"jsonb":{"listMap":[{"age":"21","name":"张三"},{"age":"22","name":"李四"}]}}
6、多级 JSON 组合
6.1、只获取指定字段,接上⽅⽰例代码
String getJsona = JSON.parseObject(jsonAllStr).getString("jsona");
String strjsona = JSON.parseObject(getJsona, String.class); //指定获取字段名对象信息,如果为单个String可不指定,这⾥作为实例写出System.out.println("只拿jsona信息");
System.out.println(strjsona);
输出:
只拿jsona信息
{"number":"1"}
6.2、获取指定字段对象
String getJsonb = JSON.parseObject(jsonAllStr).getString("jsonb");
String getJsonbb = JSON.parseObject(getJsonb).getString("listMap");    //这⾥被⼆级包裹,所以要获取2次才能转换对象数组
List<Student> strjsonb = JSON.parseArray(getJsonbb, Student.class);
System.out.println("只拿jsonbb信息");
System.out.println(strjsonb);
输出:
只拿jsonbb信息
[Student@3d04a311, Student@7a46a697]
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。