怎么把下面这个json解析后的结果存到集合里
"items":[{"name":"wang","age":"12","id":"0"},{"name":"li","age":"12","id":"0"},{"name":"liu","age":"12","id":"0"},{"name":"sun","age":"12","id":"0"},{"name":"zhao","age":"12","id":"0"},{"name":"wu","age":"12","id":"0"},{"name":"niu","age":"12","id":"0"}]
用JSON的包 定义一个集合,看你用什么JSON包,
里面一般有一个json.arrayto
List 【Map【String,String 】 】
试一下
你可以建立一个model:{name,age,id},然后通过映射一一一对应,再然后外面用一个数组包起来。
使用com.alibaba.fastjson
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.46</version>
</dependency>
//你的json字符串
String jsonStr = "...";
jsonObject = JSON.parseObject(jsonStr);
JSONArray arr = jsonObject.getJSONArray("items");
//下面这一步即可得到集合,注意Map可以是替换为你需要的javaBean
List<Map> list = arr.toJavaList(Map.class);
使用fastjson里面的JSON对象即可转换,要注意定义的实体对象。
首先引入maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.37</version>
</dependency>
代码参考如下:
package com.qianqiangongzi.utils;
import java.util.List;
import com.alibaba.fastjson.JSON;
public class StringToObjectUtils {
public static void main(String[] args) {
String jsonStr = "{\"items\":[" + "{\"name\":\"wang\",\"age\":\"12\",\"id\":\"0\"},"
+ "{\"name\":\"li\",\"age\":\"12\",\"id\":\"0\"}," + "{\"name\":\"liu\",\"age\":\"12\",\"id\":\"0\"},"
+ "{\"name\":\"sun\",\"age\":\"12\",\"id\":\"0\"}," + "{\"name\":\"zhao\",\"age\":\"12\",\"id\":\"0\"},"
+ "{\"name\":\"wu\",\"age\":\"12\",\"id\":\"0\"}," + "{\"name\":\"niu\",\"age\":\"12\",\"id\":\"0\"}]}";
Item item = getItem(jsonStr);
System.out.println(JSON.toJSON(item));
}
/**
* json字符串转json对象
*
* @param jsonStr
* @return
*/
public static Item getItem(String jsonStr) {
Item item = JSON.parseObject(jsonStr, Item.class);
return item;
}
}
class Item {
private List<Student> items;
public List<Student> getItems() {
return items;
}
public void setItems(List<Student> items) {
this.items = items;
}
@Override
public String toString() {
return "Item [items=" + items + "]";
}
}
class Student {
private String name;
private String age;
private String id;
public Student() {
}
public Student(String name, String age, String id) {
super();
this.name = name;
this.age = age;
this.id = id;
}
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", id=" + id + "]";
}
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;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
运行截图:
不亲自试过,有怎么知道能行!编码不易,望采纳。
第一步,下新建一个普通java项目,
第二步,到下面的网址,如下图,下载jar包(如果你是maven项目,直接添加依赖即可)
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core/2.9.8
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind/2.9.8
https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations/2.9.8
第三步:导入jar,然后代码如下(需要说明的是,你的json字符串在最外层,需要加一个{}才是正确的), 为了3简单,3个类写在一个java文件里面
import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectReader;
class Item {
private String id;
private String name;
private String age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "这个是对象数据啊啊啊 Item [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public Item() {
//这个必须
}
}
class MyDataList {
private List<Item> items;
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
public MyDataList() {
//这个必须
}
@Override
public String toString() {
return "MyDataList [items=" + items + "]";
}
}
public class JsontTest {
static String json = "{\"items\":[{\"name\":\"wang\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"li\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"liu\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"sun\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"zhao\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"wu\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"niu\",\"age\":\"12\",\"id\":\"0\"}] }";
public static void main(String[] args) {
System.out.println("您处理之前的Json是" + json);
/**
* ObjectMapper是JSON操作的核心,Jackson的所有JSON操作都是在ObjectMapper中实现。
* ObjectMapper有多个JSON序列化的方法,可以把JSON字符串保存File、OutputStream等不同的介质中。
* writeValue(File arg0, Object arg1)把arg1转成json序列,并保存到arg0文件中。
* writeValue(OutputStream arg0, Object arg1)把arg1转成json序列,并保存到arg0输出流中。
* writeValueAsBytes(Object arg0)把arg0转成json序列,并把结果输出成字节数组。
* writeValueAsString(Object arg0)把arg0转成json序列,并把结果输出成字符串。
*/
ObjectMapper objectMapper = new ObjectMapper();
// ObjectReader reader = objectMapper.readerFor(new TypeReference<Map<String,Object>>() {
ObjectReader reader = objectMapper.readerFor(new TypeReference<MyDataList>() {
});
try {
MyDataList data = reader.readValue(json);
System.out.println("转换后的对象List" + data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
json字符串转成json数组对象,遍历,转成
List<Map<object,object>>
或者自己创建个对象
List<自定义对象>
c# 写法 给你个参考
public class Test
{
public List items { get; set; }
}
public class Item
{
public string name { get; set; }
public string age { get; set; }
public string id { get; set; }
}
public static T ToJsonModel(this string str)
{
return JsonConvert.DeserializeObject(str);
}
public void Main(string json)
{
Test test = new Test();
test = json.ToJsonModel();
}
app目录build里面dependencies 中添加implementation 'com.google.code.gson:gson:2.8.5'
用Gson的话不用自己去写一堆的set,get,Androidstudio中直接有插件GsonFormat可以快速生成
public class Items {
private List<ItemsBean> items;
public List<ItemsBean> getItems() {
return items;
}
public void setItems(List<ItemsBean> items) {
this.items = items;
}
public static class ItemsBean {
/**
* name : wang
* age : 12
* id : 0
*/
private String name;
private String age;
private String id;
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;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
}
String str = "{\"items\":[{\"name\":\"wang\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"li\",\"age\":\"12\",\"id\":\"0\"}," +
"{\"name\":\"liu\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"sun\",\"age\":\"12\",\"id\":\"0\"}," +
"{\"name\":\"zhao\",\"age\":\"12\",\"id\":\"0\"}," +
"{\"name\":\"wu\",\"age\":\"12\",\"id\":\"0\"},{\"name\":\"niu\",\"age\":\"12\",\"id\":\"0\"}]}";
Gson gson = new Gson();
Items items = new Gson().fromJson(str, Items.class);
if (items == null)
return;
List list = items.getItems();
if (list == null | list.size() == 0)
return;
Log.e("items----", gson.toJson(list));
Log输出如下:
items----: [{"age":"12","id":"0","name":"wang"},{"age":"12","id":"0","name":"li"},{"age":"12","id":"0","name":"liu"},{"age":"12","id":"0","name":"sun"},{"age":"12","id":"0","name":"zhao"},{"age":"12","id":"0","name":"wu"},{"age":"12","id":"0","name":"niu"}]
悬赏分数多,就是不一样啊,还有粘贴代码的 - -。
首先你的这段报文,就不是Json,两边的大括号是必须的。非要解析的话,可以前后加{}
有了Json,剩下的就是第三方包的威力了,Gson、Jackson、Fastjson,爱用啥用啥,
也不需要模型来映射,包里都有相应的抽象。
我就混混,万一分给我了呢