我正在尝试从URL中读取以下json输出
{
"error": false,
"status": 200,
"message": "License Key activated successfully.",
"data": {
"expire": 1582657054,
"activation_id": 1519628117,
"expire_date": "2020-02-25 18:57",
"timezone": "UTC",
"the_key": "Cqu62al903ICv40am9nM68Y7o9-32",
"url": "http://domain/my-account/view-license-key/?key=test-32",
"has_expired": false,
"status": "active",
"allow_offline": true,
"offline_interval": "days",
"offline_value": 1,
"downloadable": {
"name": "v1.1.5",
"url": "https://domain/product-1.1.5.zip"
},
"ctoken": "dsfejk8989"
}
}
我试图同时获得两个值“状态:200”和“ activation_id”。
我尝试过在线查找和解析。似乎没有任何作用。我对整个json阅读有点陌生。
try {
JSONParser jsonParser = new JSONParser();
String jsonS = "";
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.connect();
BufferedReader in = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
jsonS += inputLine;
}
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonS, JsonObject.class);
int id = jsonObject.get("status").getAsInt();
cintout(id);
cout(link);
cout(inputLine);
try {
if (id == 200)
return ValidationType.VALID;
else
return ValidationType.WRONG_RESPONSE;
} catch (IllegalArgumentException exc) {
if (id == 200)
return ValidationType.VALID;
else
return ValidationType.WRONG_RESPONSE;
}
} catch (IOException e) {
e.printStackTrace();
return ValidationType.VALID;
}
我设法检索了状态值,但未检索到激活ID。
答案 0 :(得分:0)
您需要使用Gson获取data
对象,然后才能访问其字段:
int activation_id = jsonObject.get("data").getAsJsonObject().get("activation_id").getAsInt();
答案 1 :(得分:0)
您使用了两个库来进行JSON解析,这在此上下文中不是必需的。假设您要使用Gson
。删除JSONParser jsonParser = new JSONParser();
现在,可以在activation_id
到达JSON数据Root -> data -> activation_id
。根代表存储到jsonObject
的整个JSON对象。 data
键本身代表一个对象。因此,我们可以通过获取activation_id
键值作为对象,然后获取data
作为int / string来达到activation_id
。
Gson gson = new Gson();
JsonObject jsonObject = gson.fromJson(jsonS, JsonObject.class);
int id = jsonObject.get("status").getAsInt();
int activationId = jsonObject.get("data").getAsJsonObject().get("activation_id").getAsInt();
有关json对象的更多信息:https://www.shapediver.com/blog/json-objects-explained/