我编写了返回JSON url数据的代码。 数据存储为String,这是输出的示例;
{
"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);
我需要帮助的是创建一个Status字段,然后创建一个记录数组,它将保存Timestamp,DeviceId,Temperature和那些值。
我试过看GSON,但我无法理解
如果有人有任何帮助,那就太棒了,谢谢
答案 0 :(得分:0)
这很简单。你应该创建一个与你的json结构匹配的java类。
e.g。
public class Response {
String status;
List<Record> records;
}
public class Record {
long timestamp;
int deviceId;
int temperature;
}
而不是将你的json和Response.class
提供给gson。
答案 1 :(得分: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);
答案 2 :(得分: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);
}
}