Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 解析JSON文件_Java_Json_Parsing - Fatal编程技术网

Java 解析JSON文件

Java 解析JSON文件,java,json,parsing,Java,Json,Parsing,我想用java解析一个JSON文件,并从下面提到的文件中获得以下值: { "status": "OK", "origin_addresses": [ "Vancouver, BC, Canada", "Seattle, État de Washington, États-Unis" ], "destination_addresses": [ "San Francisco, Californie, États-Unis", "Victoria, BC, Canada" ], "ro

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

{
  "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"
      }
    } ]
  } ]
}
从每个元素中,我想得到距离和持续时间的值字段。我该怎么做

  • 创建反映JSON的类结构
  • 使用类似Jackson或GSON的库将json反序列化到类的实例

  • 如果您想要更动态的方法,上述框架还可以序列化为映射。

    使用库来处理JSON。例如。

    正如Bozho所说,创建反射JSON的类结构,然后使用jacson库,如下所示:

    提及

    ObjectMapper mapper=new ObjectMapper();
    项目项目=
    readValue(新文件(“projects.json”)、projects.class);
    ArrayList projects=projs.get(“projects”);
    对于(项目p:项目){
    ArrayList description=p.getDescription();
    用于(字符串s:说明){
    系统输出打印项次;
    
    您可以使用类似


    是的,您可以使用jacson来解析它,但是有更简单的方法来完成 它的Jsonme库“import org.json.me”您不必添加jar文件来使用它

         JSONObject obj = new JSONObject("{'var1':'val1','var2':200});
         String var1=obj.getString("var1");
         int var2=obj.getInt("var2");
    

    是的,这更容易,但是如果您的项目很复杂,我建议您使用jacson lib,使用json.org参考实现(,)。代码有点凌乱,但我认为它满足了您的要求。您可以通过不创建所有这些对象而直接访问它们来使用许多快捷方式。我这样做的原因是为了更容易了解发生的事情

    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();
            }
        }
    }
    
    package com.mypackage;
    导入org.json.JSONArray;
    导入org.json.JSONException;
    导入org.json.JSONObject;
    公共班机{
    公共静态void main(字符串[]args){
    字符串jsonStr=“{\'status\”:[\'OK\”,“origin\u addresses\”:[\'BC,Canada\”,“西雅图,华盛顿州埃塔茨Unis\”],“destination\u addresses\”:[\'San Francisco,Californie,埃塔茨Unis\”,“Victoria,BC,Canada\”,“rows\”:[{\'elements\”:[{\'status\:“OK\”,“duration\”,“duration\”:{'value\”:340110,\'text\,“text\”:“3jours\”\“距离”和“距离”方面的一点:“,”距离”的一点:“,”距离”的一点:“,,”距离”的一点:“,”距离”的一点:“,,,,,,,“,”距离”的一点:“,,,,,,“,“距离”的一点:“,,,“文本”文本:““1 735公里10.5万公里”的一点:,,,,,,,,“现状”状态:“,,,“持续时间”持续时间:“,::::::,,,,,,,,,,,:::“距离”距离:“::::::::::::::::“6秒秒秒秒即即6分分分庭庭庭庭庭庭庭庭价48分钟48分钟48分钟48分钟48分钟”的一点:“,,,,,,,,,,,,,,,,,,,,,,,,,,,,,9604年\“text\”:“1490公里”}、{“状态”:“确定”、“持续时间”:{“值”:14388、“text\”:“4小时0分钟”}、““距离”:{“值”:135822、““text\”:“136公里”}];
    试一试{
    JSONObject rootObject=newJSONObject(jsonStr);//将JSON解析为JSONObject
    JSONArray rows=rootObject.getJSONArray(“rows”);//获取所有JSONArray行
    对于(inti=0;i
    您可以使用:

    org.bson.Document d = org.bson.Document.parse("{ foo: \"bar\" }");
    

    检查这个:org.json库非常适合简单解析json。这个视频显示希望它能有所帮助。
    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();
            }
        }
    }
    
    org.bson.Document d = org.bson.Document.parse("{ foo: \"bar\" }");