解析 JSON 文件 Java [英] Parsing JSON File Java

查看:28
本文介绍了解析 JSON 文件 Java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用java解析一个JSON文件并从下面提到的文件中获取以下值:

I want to parse a JSON file in java and get the following values from the file mentioned below:

{
  "status": "OK",
  "origin_addresses": [ "Vancouver, BC, Canada", "Seattle, État de Washington, États-Unis" ],
  "destination_addresses": [ "San Francisco, Californie, États-Unis", "Victoria, BC, 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"
      }
    }, {
      "status": "OK",
      "duration": {
        "value": 14388,
        "text": "4 heures 0 minutes"
      },
      "distance": {
        "value": 135822,
        "text": "136 km"
      }
    } ]
  } ]
}

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

From every element, i want to get the value field of both distance and duration. How do i do this?

推荐答案

使用 json.org 参考实现 (org.json 主页在此处下载).代码有点乱,但我认为它可以满足您的要求.您可以通过不创建所有这些对象而是直接访问它们来采取许多快捷方式.我这样做的原因是为了更容易地了解正在发生的事情.

Using the json.org reference implementation (org.json homepage, Download here). The code is a bit messy but I think it does what you are asking for. You can take alot of shortcuts by not creating all this objects but to access them directly. The reason that I do it this way is an attempt to make it easier to follow whats happening.

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, BC, Canada", "Seattle, État de Washington, États-Unis" ],"destination_addresses": [ "San Francisco, Californie, États-Unis", "Victoria, BC, 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"}}, {"status": "OK","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();
        }
    }
}

这篇关于解析 JSON 文件 Java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆