Getter方法对某些东西返回null,为另一些东西返回正确的结果

时间:2013-10-14 11:36:20

标签: java json gson

我创建了一个从JSON URL解析数据的方法。

数据被放入列表中,我希望以表格形式显示,我可以。

我有getter和setter方法来获取/设置信息但是当我对Timestamp和deviceId使用get方法时,它返回一个值。但是当我使用get方法进行测量和测量时,它返回null / 0。

这是我正在解析的JSON URL;

{
"status": "success",
"records": [
    {
        "timestamp": 1381735967866,
        "deviceId": "288",
        "temperature": 3304500
    },
    {
        "timestamp": 1381735997866,
        "deviceId": "288",
        "temperature": 3304500
    },
    {
        "timestamp": 1381736027866,
        "deviceId": "288",
        "temperature": 3304500
    }

这只是一个片段,但基本上就是它。

以下是用于划分信息的java代码;

public class Records 
{
private long timestamp;
private int deviceId;
private String measuring;
private int measurment;

public long getTimestamp() 
{ 
    return timestamp; 
}

public int getDeviceId() 
{ 
    return deviceId; 
}

public String getMeasuring()
{
    return measuring;
}

public int getMeasurment()
{
    return measurment;
}

public void setTimestamp(long timestamp) 
{ 
    this.timestamp = timestamp; 
}

public void setDeviceId(int deviceId) 
{ 
    this.deviceId = deviceId; 
}

public void setMeasuring(String measuring)
{
    this.measuring = measuring;
}

public void setMeasurment(int measurment)
{
    this.measurment = measurment;
}

public String toString()
{
    return String.format("Timestamp: %d\tDevice ID: %d\t%s: %d", timestamp, deviceId, measuring, measurment);
}
}

我调用字符串测量而不是温度,因为还有其他JSON URL我也在解析,它们具有不同的温度值(负载,位移等)但是deviceId和Timestamp是相同的。

以下是我打印结果的方式;

Gson gson = new Gson();
Elements elements = gson.fromJson(jsonString, Elements.class);

long previousTimestamp = 01;
long result;

for(Records records : elements.getRecords())
{
    System.out.println(records + "\n");
}

打印结果是这样的;

时间戳:1381746686550设备ID:288 null:0

时间戳:1381746716550设备ID:288 null:0

时间戳:1381746746550设备ID:288 null:0

时间戳:1381746776550设备ID:288 null:0

时间戳:1381746806550设备ID:288 null:0

时间戳:1381746836550设备ID:288 null:0

时间戳和deviceId打印输出,但测量和测量没有。

当我调用温度URL时,我希望的是,温度将代替null,而int值代替0.相同的位移,负载等

是否有人有任何信息或帮助,这将是伟大的,谢谢

1 个答案:

答案 0 :(得分:0)

{
        "timestamp": 1381736027866,
        "deviceId": "288",
        "temperature": 3304500
}

您的json没有measuringmeasurment的数据。这就是你无法在输出中看到它们的原因。由于measuring是一个字符串,因此在未填充时会得到null(如果未初始化字符串,则为默认值),而measurmentint,则会得到0默认值{ "timestamp": 1381736027866, "deviceId": "288", "temperature": 3304500, "measuring": "someMeasureValue", "measurment": 10 }

如果你的json有这两个元素,就像这样

Timestamp: 1381746686550 Device ID: 288 someMeasureValue: 10

然后它会在对象中填充这些值,输出就是

{{1}}