将 JSON 有效负载转换为 Java 中的有用数据
Converting a JSON payload into useful data in Java
首先,我是 Java 的新手。我正在尝试使用他们的 API 和 Arduino 为 Twitch 制作一个通知系统,而我目前几乎停留在开始阶段。我能够访问 API 并获取信息,但我不知道如何将其转换成有用的东西。这是我目前的代码。
public class commandRun {
public static void main(String[] args) {
Process p;
try {
p = Runtime.getRuntime().exec("cmd /c curl -H \"Client-ID: clientID\" -X GET \"https://api.twitch.tv/helix/users/follows?first=1&to_id=channelID\n");
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String twitchFollower;
while((twitchFollower = reader.readLine()) != null) {
System.out.println(twitchFollower);
}
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这个returns
{
"total": 106,
"data": [
{
"from_id": "followerID",
"from_name": "follower",
"to_id": "channelid",
"to_name": "channel",
"followed_at": "2019-10-06T21:03:03Z"
}
],
"pagination": {
"cursor": "dontknowifthisissensitiveinfo"
}
}
我希望能够从字符串中提取特定信息,例如关注者的姓名。
有很多 JSON 库可以实现这一点,如 jrook 的评论。
下面的示例代码显示了最流行的 2 个库 - Jackson 和 Gson - 如何获取特定字段的值。 (我假设follower名字的key是from_name。)
// Jackson
ObjectMapper mapper = new ObjectMapper();
String followerName = mapper.readTree(jsonStr)
.get("data")
.get(0)
.get("from_name")
.asText();
System.out.println(followerName);
// Gson
followerName = new JsonParser().parse(jsonStr)
.getAsJsonObject()
.get("data")
.getAsJsonArray()
.get(0)
.getAsJsonObject()
.get("from_name")
.getAsString();
System.out.println(followerName);
控制台输出:
follower
follower
首先,我是 Java 的新手。我正在尝试使用他们的 API 和 Arduino 为 Twitch 制作一个通知系统,而我目前几乎停留在开始阶段。我能够访问 API 并获取信息,但我不知道如何将其转换成有用的东西。这是我目前的代码。
public class commandRun {
public static void main(String[] args) {
Process p;
try {
p = Runtime.getRuntime().exec("cmd /c curl -H \"Client-ID: clientID\" -X GET \"https://api.twitch.tv/helix/users/follows?first=1&to_id=channelID\n");
p.waitFor();
BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream()));
String twitchFollower;
while((twitchFollower = reader.readLine()) != null) {
System.out.println(twitchFollower);
}
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这个returns
{
"total": 106,
"data": [
{
"from_id": "followerID",
"from_name": "follower",
"to_id": "channelid",
"to_name": "channel",
"followed_at": "2019-10-06T21:03:03Z"
}
],
"pagination": {
"cursor": "dontknowifthisissensitiveinfo"
}
}
我希望能够从字符串中提取特定信息,例如关注者的姓名。
有很多 JSON 库可以实现这一点,如 jrook 的评论。
下面的示例代码显示了最流行的 2 个库 - Jackson 和 Gson - 如何获取特定字段的值。 (我假设follower名字的key是from_name。)
// Jackson
ObjectMapper mapper = new ObjectMapper();
String followerName = mapper.readTree(jsonStr)
.get("data")
.get(0)
.get("from_name")
.asText();
System.out.println(followerName);
// Gson
followerName = new JsonParser().parse(jsonStr)
.getAsJsonObject()
.get("data")
.getAsJsonArray()
.get(0)
.getAsJsonObject()
.get("from_name")
.getAsString();
System.out.println(followerName);
控制台输出:
follower
follower