在java中解析json数据格式文件_解析JSON文件Java

我想在

java中解析

JSON文件,并从下面提到的文件中获取以下值:

{

"status": "OK","origin_addresses": [ "Vancouver,BC,Canada","Seattle,État de Washington,États-Unis" ],"destination_addresses": [ "San Francisco,Californie,États-Unis","Victoria,Canada" ],"rows": [ {

"elements": [ {

"status": "OK","duration": {

"value": 340110,"text": "3 jours 22 heures"

},"distance": {

"value": 1734542,"text": "1 735 km"

}

},{

"status": "OK","duration": {

"value": 24487,"text": "6 heures 48 minutes"

},"distance": {

"value": 129324,"text": "129 km"

}

} ]

},{

"elements": [ {

"status": "OK","duration": {

"value": 288834,"text": "3 jours 8 heures"

},"distance": {

"value": 1489604,"text": "1 490 km"

}

},"duration": {

"value": 14388,"text": "4 heures 0 minutes"

},"distance": {

"value": 135822,"text": "136 km"

}

} ]

} ]

}

从每个元素,我想获得距离和持续时间的值字段.我该怎么做?

使用json.org参考实现(

org.json homepage,Download here).代码有点乱,但我认为这是你要求的.您可以通过不创建所有这些对象来直接访问它们来获取大量快捷方式.我这样做的原因是试图让它更容易地遵循发生的事情.

package com.mypackage;

import org.json.JSONArray;

import org.json.JSONException;

import org.json.JSONObject;

public class Main {

public static void main(String[] args) {

String jsonStr = "{\"status\": \"OK\",\"origin_addresses\": [ \"Vancouver,Canada\",\"Seattle,États-Unis\" ],\"destination_addresses\": [ \"San Francisco,États-Unis\",\"Victoria,Canada\" ],\"rows\": [ {\"elements\": [ {\"status\": \"OK\",\"duration\": {\"value\": 340110,\"text\": \"3 jours 22 heures\"},\"distance\": {\"value\": 1734542,\"text\": \"1 735 km\"}},{\"status\": \"OK\",\"duration\": {\"value\": 24487,\"text\": \"6 heures 48 minutes\"},\"distance\": {\"value\": 129324,\"text\": \"129 km\"}} ]},{\"elements\": [ {\"status\": \"OK\",\"duration\": {\"value\": 288834,\"text\": \"3 jours 8 heures\"},\"distance\": {\"value\": 1489604,\"text\": \"1 490 km\"}},\"duration\": {\"value\": 14388,\"text\": \"4 heures 0 minutes\"},\"distance\": {\"value\": 135822,\"text\": \"136 km\"}} ]} ]}";

try {

JSONObject rootObject = new JSONObject(jsonStr); // Parse the JSON to a JSONObject

JSONArray rows = rootObject.getJSONArray("rows"); // Get all JSONArray rows

for(int i=0; i < rows.length(); i++) { // Loop over each each row

JSONObject row = rows.getJSONObject(i); // Get row object

JSONArray elements = row.getJSONArray("elements"); // Get all elements for each row as an array

for(int j=0; j < elements.length(); j++) { // Iterate each element in the elements array

JSONObject element = elements.getJSONObject(j); // Get the element object

JSONObject duration = element.getJSONObject("duration"); // Get duration sub object

JSONObject distance = element.getJSONObject("distance"); // Get distance sub object

System.out.println("Duration: " + duration.getInt("value")); // Print int value

System.out.println("Distance: " + distance.getInt("value")); // Print int value

}

}

} catch (JSONException e) {

// JSON Parsing error

e.printStackTrace();

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值