我正在使用json解析器对象解析json文件。我无法访问请求结构及其内部内容。 我写的代码如下:
private static final String filePath = "D:\\score_api.json";
public static void main(String[] args) throws FileNotFoundException, IOException, ParseException {
FileReader reader = new FileReader(filePath);
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
System.out.println("++++++++++++++++++\n"+jsonObject);
// prints the whole json content. success!
JSONObject structure = (JSONObject) jsonObject.get("provider");
System.out.println("provider name: " + structure.get("name"));
// prints the provider name. success!
JSONArray req= (JSONArray) jsonObject.get("interactions");
Iterator i = req.iterator();
while (i.hasNext()) {
JSONObject reqObj = (JSONObject) i.next();
System.out.println("description: " + reqObj.get("description") +"\n");
System.out.println("request body: " + reqObj.get("request")); // prints full request body
System.out.println("path: " + reqObj.get("path") +"\n"); // Failing, getting null value.
System.out.println("reponse body: " + reqObj.get("response") +"\n"); // Success
}
}
它的输出是:
++++++++++++++++++++
{“完整的json文件内容打印”}
提供者名称:SIS
说明:API POST得分
请求正文:{“完整的请求正文打印”}
路径:空
响应正文:{“状态”:200}
我正在努力访问请求正文内容。及其子部分。 我想访问“路径”的值以及其他内部值,例如“ adptPolVal”,“ eEcoId”和Source结构。
我是Java的新手,尝试但失败。 任何帮助,将不胜感激! 预先感谢!
这是我的json文件内容...
{
"consumer": {
"name": "Consumer1"
},
"provider": {
"name": "provider_a"
},
"interactions": [
{
"description": "API Score",
"providerStates": [
{
"name": "",
"params": {}
}
],
"request": {
"method": "post",
"path": "Z123MI6/services/score",
"headers": {
"content-type": "application/json"
},
"body": {
"adptPolVal": true,
"datapoints": [
{
"dataId": " data.point.id ",
"source": {
"srcType": "sourceType.dev.admin",
"snum": "12345",
"instId": "intance id",
"contId": "container id",
"appId": "com.consumer."
},
"userId": "userId",
"ts": 1234567891011,
"lt": 11.12345,
"lng": 123.456,
"ipId": "192.168.1.1",
"geoGraph": ""
}
],
"eEcoId": "ecoId"
}
},
"response": {
"status": 200
}
}
]
}
答案 0 :(得分:0)
您可以尝试以下链接中提供的这些方法:
答案 1 :(得分:0)
尝试替换此行
JSONArray req= (JSONArray) jsonObject.get("interactions");
使用:
JSONArray req= (JSONArray)jsonObject.getJSONArray("interactions");
答案 2 :(得分:0)
您可以使用以下类作为参考来获得所需的值。
请确保使用getJSONArray()和getJSONObject()方法 适当地根据您的输出。
package com.test.test;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;
public class Test {
public static void main(String[] args) throws IOException, JSONException {
String filePath = "C://Users//hello//Desktop//New Text Document.txt";
String string = FileUtils.readFileToString(new File(filePath));
JSONObject jsonObject = new JSONObject(string);
JSONArray jsonArray = jsonObject.getJSONArray("interactions");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject reqObj = jsonArray.getJSONObject(i);
System.out.println("description: " + reqObj.get("description") +"\n");
System.out.println("request body: " + reqObj.get("request")); // prints full request body
System.out.println("reponse body: " + reqObj.get("response") +"\n"); // Success
JSONObject requestBoday = reqObj.getJSONObject("request");
JSONObject body = requestBoday.getJSONObject("body");
}
}
}