1

我编写了返回 JSON url 数据的代码。数据存储为字符串,这是输出示例;

{

"status": "success",

"records": [

    {
        "timestamp": 1381312251599,
        "deviceId": "288",
        "temperature": 17
    },

    {
        "timestamp": 1381312281599,
        "deviceId": "288",
        "temperature": 17
    },

    {
        "timestamp": 1381312311599,
        "deviceId": "288",
        "temperature": 17
    }
]
}

这是用于获取此信息的代码示例;

String jsonString = callURL("http://localhost:8000/eem/api/v1/metrics/temperature/288");
System.out.println(jsonString);

我需要帮助的是创建一个状态字段,然后是一个记录数组,它将保存时间戳、设备 ID、温度和那里的值。

我曾尝试查看 GSON,但我无法理解

如果有人有任何帮助,那就太好了,谢谢

4

3 回答 3

0

这很简单。您应该创建一个与您的 json 结构匹配的 java 类。

例如

public class Response {
     String status;
     List<Record> records;
}

public class Record {
     long timestamp;
     int deviceId;
     int temperature;
}

而不是提供你的json和Response.classgson。

于 2013-10-09T11:24:55.440 回答
0

我使用杰克逊,它很简单。

您需要创建与您的 jsonString 具有相同属性的适当的 java 类。

你需要创建这样的东西

class Record {
   private Long timestamp;
   private Integer deviceId;
   private Integer temperature;

   // getters and setters ...
}

class Response {

  private String status;
  private List<Record> records;

   // getters and setters ...

}

进而

ObjectMapper mapper = new ObjectMapper();
return mapper.readValue(jsonString, Response.class);
于 2013-10-09T11:33:00.170 回答
0

复制、粘贴并运行:

package stackoverflow.questions;

import java.util.List;

import com.google.gson.Gson;

public class Question {

    class Record {
        Long timestamp;
        String deviceId;
        Long temperature;
    }

    class Container {
        List<Record> records;
    }

    public static void main(String[] args) {
        String json = "{ \"status\": \"success\", \"records\": [{\"timestamp\": 1381222871868,\"deviceId\": \"288\",\"temperature\": 17 },{\"timestamp\": 1381222901868,\"deviceId\": \"288\",\"temperature\": 17 },{\"timestamp\": 1381222931868,\"deviceId\": \"288\",\"temperature\": 17 } ]} ";

        Gson g = new Gson();
        Container c = g.fromJson(json, Container.class);
        for (Record r : c.records)
            System.out.println(r);

    }
}
于 2013-10-09T22:21:28.333 回答