解析从Google Distance Matrix API发送的Json响应

时间:2017-10-06 16:37:45

标签: java json httprequest response javax.ws.rs

这个json发生在目的地或起源位于英国境外时,因此没有给我任何结果!我需要检查这是否为空检查,所以我没有收到空指针异常

JSON结果:

{
"destination_addresses" : [ "Durham, NC, USA" ],
"origin_addresses" : [ "Lancashire, UK" ],
"rows" : [
  {
     "elements" : [
        {
           "status" : "ZERO_RESULTS"
        }
     ]
  }
],

“状态”:“确定”      }

代码:

public static void extractJsonFromRequest(GoogleResponsePojo response) {
    String destinationAddress = 
    response.getDestination_addresses().get(0);
    String timeTaken = 
response.getRows().get(0).getElements().get(0).getDuration().getText();
    String originAddress = response.getOrigin_addresses().get(0);

    System.out.println("It will take ** "+  timeTaken + " ** to walk 
from " + originAddress + " to " + destinationAddress);
}

Google Reponse POJO是json的结构:

public class GoogleResponsePojo {

private List<String> destination_addresses;
private List<String> origin_addresses;
private List<Rows> rows;

public List<String> getDestination_addresses() {
    return destination_addresses;
}

public void setDestination_addresses(List<String> destination_addresses) {
    this.destination_addresses = destination_addresses;
}

public List<String> getOrigin_addresses() {
    return origin_addresses;
}

public void setOrigin_addresses(List<String> origin_addresses) {
    this.origin_addresses = origin_addresses;
}

public List<Rows> getRows() {
    return rows;
}

public void setRows(List<Rows> rows) {
    this.rows = rows;
}
}

class Rows {
private List<Element> elements;

public List<Element> getElements() {
    return elements;
}

public void setElements(List<Element> elements) {
    this.elements = elements;
}
}

class Element {
private TextValue distance;
private TextValue duration;

public TextValue getDistance() {
    return distance;
}

public void setDistance(TextValue distance) {
    this.distance = distance;
}

public TextValue getDuration() {
    return duration;
}

public void setDuration(TextValue duration) {
    this.duration = duration;
}
}

class TextValue {
private String text;
private  String value;

public String getText() {
    return text;
}

public void setText(String text) {
    this.text = text;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}
}

我基本上需要解析下面的json以便我可以说(如果status!= ZERO_RESULTS)保存响应,否则抛出异常!可能很容易,但即时挣扎!非常感谢!

1 个答案:

答案 0 :(得分:1)

将GoogleResponsePojo更改为:

_this.recorder = new MediaRecorder(new MediaStream(e.stream.getVideoTracks()), options);

您可以按以下方式 public class GoogleResponsePojo { private List<String> destination_addresses; private List<String> origin_addresses; private List<Rows> rows; public void setDestination_addresses(List<String> destination_addresses) { this.destination_addresses = destination_addresses; } public void setOrigin_addresses(List<String> origin_addresses) { this.origin_addresses = origin_addresses; } public void setRows(List<Rows> rows) { this.rows = rows; } //getters } private static class Rows{ private List<Element> elements; public void setElements(List<Element> elements) { this.elements = elements; } //getters } private static class Element{ private TextValue distance; private TextValue duration; public void setDistance(TextValue distance) { this.distance = distance; } public void setDuration(TextValue duration) { this.duration = duration; } //getters } private static class TextValue{ private String text; private String value; public void setText(String text) { this.text = text; } public void setValue(String value) { this.value = value; } //getters }

duration

我建议使用基于apache http api构建的http-request。它易于使用:

GoogleResponsePojo name = gson.fromJson(response.toString(),GoogleResponsePojo.class);

name.getRows().get(0).getDuration().getText();