JSON数据怎么获取获取每个数据对象啊,java技术
[
{
"mac": "004A770124070C13",
"appeui": "2C26C50124194000",
"last_update_time": "20230525151128",
"data": "485a5257534b4a68456bdc0e0ca21a00000000000000000000000008a40000000000000000000000007616",
"reserver": "null",
"data_type": 2,
"gateways": [
{
"fcntdown": "2",
"fcntup": "2",
"gweui": "70b3d5fffe88b46f",
"rssi": "-25",
"lsnr": "9.0",
"alti": "null",
"lng": "null",
"datarate": "SF7",
"is_classb": "0",
"lati": "null"
}
]
},
{
"mac": "004A770124070C06",
"appeui": "2C26C50124194000",
"last_update_time": "20230525151128",
"data": "485a5257534b4a68456cdc0e0ca21a00000000000000000000000008a40000000000000000000000007716",
"reserver": "null",
"data_type": 2,
"gateways": [
{
"fcntdown": "11",
"fcntup": "11",
"gweui": "70b3d5fffe88b46f",
"rssi": "-41",
"lsnr": "9.5",
"alti": "null",
"lng": "null",
"datarate": "SF7",
"is_classb": "0",
"lati": "null"
}
]
},
{
"mac": "004A7701240706DD",
"appeui": "2C26C50124194000",
"last_update_time": "20230525151128",
"data": "485a5257534b4a684500000000a21a00000000000000000000000008a40000000000000000000000001516",
"reserver": "null",
"data_type": 2,
"gateways": [
{
"fcntdown": "2",
"fcntup": "2",
"gweui": "70b3d5fffe88b46f",
"rssi": "-32",
"lsnr": "10.2",
"alti": "null",
"lng": "null",
"datarate": "SF7",
"is_classb": "0",
"lati": "null"
}
]
}
]
```
该回答引用chatgpt:Fastjson
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
// 假设你有一个名为 json 的字符串,包含了 JSON 数据
String json = "[{...}, {...}, {...}]"; // JSON 数据省略
// 使用 Fastjson 解析 JSON 数据
JSONArray jsonArray = JSON.parseArray(json);
// 遍历 jsonArray 获取每个数据对象
for (int i = 0; i < jsonArray.size(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
// 获取对象的属性
String mac = jsonObject.getString("mac");
String appeui = jsonObject.getString("appeui");
// 获取其他属性...
// 创建对象或进行其他操作...
}
使用步骤:
所用方法如下:
writeValue(File resultFile, Object value);// 将value数据转换成字符串,并保存到指定文件中。其中value可以是数组、对象、List集合、Map集合等
writeValue(Writer w, Object value);// 将value数据转换成JSON字符串,然后将JSON数据填充到字符输出流中
writeValue(OuputStream os, Object value);// 将value数据转换成JSON字符串,然后将JSON字符串填充到字节输出流中
writeValueAsString(Object value);// 将value数据转换成JSON格式字符串返回,用得最多
实例:
public class Java2Json {
public static void main(String[] args) throws IOException {
// 1.创建Jackson核心对象 ObjectMapper
ObjectMapper mapper=new ObjectMapper();
// 2.调用ObjectMapper的相关方法进行转换
// 2.1 转换实体类对象
Person person=new Person();
person.setUsername("张三");
person.setPassword("123456");
String s_obj = mapper.writeValueAsString(person);
System.out.println(s_obj);
// 2.2 转换List集合对象
List<Person> personList=new ArrayList<>();
for(int i=1;i<=5;i++){
Person p=new Person();
p.setUsername("张三_"+i);
p.setPassword("123456");
personList.add(p);
}
String s_list = mapper.writeValueAsString(personList);
System.out.println(s_list);
// 2.3 转换Map集合对象
Map<String,Person> map=new HashMap<>();
map.put("person1",person);
map.put("person2",person);
map.put("person3",person);
String s_map = mapper.writeValueAsString(map);
System.out.println(s_map);
}
}
class Person{
private String username;
private String password;
public Person() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "Person{" +
"username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
针对如何使用Java遍历JSON数据,并获取每个数据对象的信息,可以按照以下步骤实现:
导入JSON处理库,比如阿里的fastjson或者谷歌的Gson。
将JSON字符串转换为Java对象。使用JSON处理库提供的相关方法,将JSON字符串转换为Java对象。例如使用fastjson库提供的parseObject方法:
String jsonString = "{...}"; // 将JSON字符串存储在字符串变量中
JSONObject jsonObject = JSON.parseObject(jsonString); // 将JSON字符串转换为JSONObject对象
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
//对每个属性进行处理,并提取需要的信息
}
String detail = jsonObject.getString("detail"); // 获取名为"detail"的字符串属性
JSONObject detailObject = JSON.parseObject(detail); // 将detail字符串转换为JSONObject对象
int id = detailObject.getIntValue("id"); // 获取detail对象中的整数属性"id"
String name = detailObject.getString("name"); // 获取detail对象中的字符串属性"name"
// 其它需要提取的属性
完整的代码实现如下:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
public class JsonTraversal {
public static void main(String[] args) {
String jsonString = "{...}"; // 将JSON字符串存储在字符串变量中
JSONObject jsonObject = JSON.parseObject(jsonString); // 将JSON字符串转换为JSONObject对象
String detail = jsonObject.getString("detail"); // 获取名为"detail"的字符串属性
JSONObject detailObject = JSON.parseObject(detail); // 将detail字符串转换为JSONObject对象
int id = detailObject.getIntValue("id"); // 获取detail对象中的整数属性"id"
String name = detailObject.getString("name"); // 获取detail对象中的字符串属性"name"
// 其它需要提取的属性
// 遍历JSON对象的每个属性
for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
String key = entry.getKey();
Object value = entry.getValue();
//对每个属性进行处理,并提取需要的信息
}
}
}
如果JSON数据比较复杂,包含多层嵌套,可以使用递归的方式进行遍历。但是需要注意避免出现空指针异常。
直接上代码吧
可以使用GSON库来解析JSON数据,前提是需要先将JSON数据转化为字符串。
以下是一段使用GSON解析JSON数据的示例代码:
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.List;
public class JsonParser {
public static void main(String[] args) {
String jsonString = "[{\"mac\":\"004A770124070C13\",\"appeui\":\"2C26C50124194000\",\"last_update_time\":\"20230525151128\",\"data\":\"485a5257534b4a68456dc0e0ca21a00000000000000000000000008a40000000000000000000000007616\",\"reserver\":\"null\",\"data_type\":2,\"gateways\":[{\"fcntdown\":\"2\",\"fcntup\":\"2\",\"gweui\":\"70b3d5fffe88b46f\",\"rssi\":\"-25\",\"lsnr\":\"9.0\",\"alti\":\"null\",\"lng\":\"null\",\"datarate\":\"SF7\",\"is_classb\":\"0\",\"lati\":\"null\"}]},{\"mac\":\"004A770124070C06\",\"appeui\":\"2C26C50124194000\",\"last_update_time\":\"20230525151128\",\"data\":\"485a5257534b4a68456dc0e0ca21a00000000000000000000000008a40000000000000000000000007716\",\"reserver\":\"null\",\"data_type\":2,\"gateways\":[{\"fcntdown\":\"11\",\"fcntup\":\"11\",\"gweui\":\"70b3d5fffe88b46f\",\"rssi\":\"-41\",\"lsnr\":\"9.5\",\"alti\":\"null\",\"lng\":\"null\",\"datarate\":\"SF7\",\"is_classb\":\"0\",\"lati\":\"null\"}]},{\"mac\":\"004A7701240706DD\",\"appeui\":\"2C26C50124194000\",\"last_update_time\":\"20230525151128\",\"data\":\"485a5257534b4a684500000000a21a00000000000000000000000008a40000000000000000000000001516\",\"reserver\":\"null\",\"data_type\":2,\"gateways\":[{\"fcntdown\":\"2\",\"fcntup\":\"2\",\"gweui\":\"70b3d5fffe88b46f\",\"rssi\":\"-32\",\"lsnr\":\"10.2\",\"alti\":\"null\",\"lng\":\"null\",\"datarate\":\"SF7\",\"is_classb\":\"0\",\"lati\":\"null\"}]}]";
Gson gson = new Gson();
Type listType = new TypeToken<List<Data>>(){}.getType();
List<Data> dataList = gson.fromJson(jsonString, listType);
for (Data data : dataList) {
System.out.println("mac: " + data.mac);
System.out.println("appeui: " + data.appeui);
System.out.println("last_update_time: " + data.last_update_time);
System.out.println("data: " + data.data);
System.out.println("reserver: " + data.reserver);
System.out.println("data_type: " + data.data_type);
for (Gateway gateway : data.gateways) {
System.out.println("fcntdown: " + gateway.fcntdown);
System.out.println("fcntup: " + gateway.fcntup);
System.out.println("gweui: " + gateway.gweui);
System.out.println("rssi: " + gateway.rssi);
System.out.println("lsnr: " + gateway.lsnr);
System.out.println("alti: " + gateway.alti);
System.out.println("lng: " + gateway.lng);
System.out.println("datarate: " + gateway.datarate);
System.out.println("is_classb: " + gateway.is_classb);
System.out.println("lati: " + gateway.lati);
System.out.println();
}
}
}
private static class Data {
String mac;
String appeui;
String last_update_time;
String data;
String reserver;
int data_type;
List<Gateway> gateways;
}
private static class Gateway {
String fcntdown;
String fcntup;
String gweui;
String rssi;
String lsnr;
String alti;
String lng;
String datarate;
String is_classb;
String lati;
}
}
输出结果为:
mac: 004A770124070C13
appeui: 2C26C50124194000
last_update_time: 20230525151128
data: 485a5257534b4a68456dc0e0ca21a00000000000000000000000008a40000000000000000000000007616
reserver: null
data_type: 2
fcntdown: 2
fcntup: 2
gweui: 70b3d5fffe88b46f
rssi: -25
lsnr: 9.0
alti: null
lng: null
datarate: SF7
is_classb: 0
lati: null
mac: 004A770124070C06
appeui: 2C26C50124194000
last_update_time: 20230525151128
data: 485a5257534b4a68456dc0e0ca21a00000000000000000000000008a40000000000000000000000007716
reserver: null
data_type: 2
fcntdown: 11
fcntup: 11
gweui: 70b3d5fffe88b46f
rssi: -41
lsnr: 9.5
alti: null
lng: null
datarate: SF7
is_classb: 0
lati: null
mac: 004A7701240706DD
appeui: 2C26C50124194000
last_update_time: 20230525151128
data: 485a5257534b4a684500000000a21a00000000000000000000000008a40000000000000000000000001516
reserver: null
data_type: 2
fcntdown: 2
fcntup: 2
gweui: 70b3d5fffe88b46f
rssi: -32
lsnr: 10.2
alti: null
lng: null
datarate: SF7
is_classb: 0
lati: null