java - 从 Java 中的 JSON 对象中的数组获取值?
问题描述
我对 Java 中的 REST API 调用相当陌生,目前在尝试从 JSON 对象(如下)获取“项目”部分时遇到问题。我想这也让我感到困惑,“响应”也是数组中的一个对象?/
JSON文件如下:
{
"version": "1.0",
"code": 200,
"request":{"text":["seafood" ], "lang": "en", "type": "stimulus"},
"response":[{
"text": "seafood",
"items":[
{"item": "Shrimp", "weight": 100, "pos": "noun" },
{"item": "Lobster",…
]
}]
}
我目前已经设法使用以下方法获得对象的“响应”部分:
BufferedReader in = new BufferedReader(
new InputStreamReader(conection.getInputStream()));
StringBuffer json = new StringBuffer();
while ((readLine = in.readLine()) != null) {
json.append(readLine);
}
in.close();
JSONParser parser = new JSONParser();
try{
JSONObject object= (JSONObject) parser.parse(json.toString());
Object response = json.get("response");
...
到目前为止,我被卡住了。我不知道如何“响应”来获取“项目”,如果我尝试将“响应”转换为 JSONObject,它将返回为 null?
我想要尝试做的是获取“项目”部分中的每个“项目”并将其放入列表中。
非常感谢您的帮助!
解决方案
我认为它应该有效:
JSONParser parser = new JSONParser();
try{
JSONObject object= (JSONObject) parser.parse(json.toString());
JSONArray response = object.getJSONArray("response");
JSONObject responseObject = response.getJSONObject(0);
JSONArray expectedArray = responseObject.getJSONArray("items");
for (int i = 0; i < expectedArray.length(); i++) {
String item = expectedArray.getJSONObject(i).getString("item");
String weight = expectedArray.getJSONObject(i).getInt("weight");
......
//Here you can create your custom object and add to your array. For example
list.add(new MyOwnObject(item, weight));
}
....
因为响应是数组,而不是对象
推荐阅读
- sql - impala sql 将 1 行转置/转置为列或按范围分组的替代方法
- firebase - pdfmake 服务器端 Firebase 功能
- javascript - 合并两个对象javascript数组中的每个元素
- excel - 清空范围内单元格的 VBA 子程序
- java - 我不知道问题,但是当我单击按钮 getstart 时,框架似乎卡住了
- expressionengine - ExpressionEngine 文件未删除
- reactjs - 有人在反应管理员中选择过滤器有问题吗?
- javascript - Font Awesome 5 中的 dom.i2svg() 不起作用
- java - 有没有办法将一个字符循环到一个数组中?
- hibernate - 休眠 FetchMode.JOIN 与 FetchMode.SUBSELECT