【问题标题】:how to parse below Json file in java , which has no key [duplicate]如何在java中解析下面的Json文件,它没有密钥[重复]
【发布时间】:2020-01-24 13:14:44
【问题描述】:
{
 "type": "telemetry",
 "timestamp": 1234,
 "device": 5678,
 "value": { 
   [
     {"battery_level": 87},
     {"var2": 2},
     {"var3": 3} 
   ] 
  }
}

我想使用 jsonobjectjsonarray 在 java 代码中解析这个 json 文件,在这里,我卡在 values 关键字里面没有数组的键。

【问题讨论】:

  • 这不是有效的 JSON。联系其提供商并解释问题。
  • 在这里您可以验证您的 json jsonlint.com

标签: json java jsonparser


【解决方案1】:

您的有效 JSON 将是 -

{
 "type": "telemetry",
 "timestamp": 1234,
 "device": 5678,
 "value": 
   [
     {"battery_level": 87},
     {"var2": 2},
     {"var3": 3} 
   ] 

}

然后您可以使用以下 JAVA POJO 对象将您的 json 解析为 java 对象 -

import java.util.List;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"type",
"timestamp",
"device",
"value"
})
public class Example {

@JsonProperty("type")
private String type;
@JsonProperty("timestamp")
private Integer timestamp;
@JsonProperty("device")
private Integer device;
@JsonProperty("value")
private List<Value> value = null;

@JsonProperty("type")
public String getType() {
return type;
}

@JsonProperty("type")
public void setType(String type) {
this.type = type;
}

@JsonProperty("timestamp")
public Integer getTimestamp() {
return timestamp;
}

@JsonProperty("timestamp")
public void setTimestamp(Integer timestamp) {
this.timestamp = timestamp;
}

@JsonProperty("device")
public Integer getDevice() {
return device;
}

@JsonProperty("device")
public void setDevice(Integer device) {
this.device = device;
}

@JsonProperty("value")
public List<Value> getValue() {
return value;
}

@JsonProperty("value")
public void setValue(List<Value> value) {
this.value = value;
}

}
-----------------------------------com.example.Value.java-----------------------------------

package com.example;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"battery_level",
"var2",
"var3"
})
public class Value {

@JsonProperty("battery_level")
private Integer batteryLevel;
@JsonProperty("var2")
private Integer var2;
@JsonProperty("var3")
private Integer var3;

@JsonProperty("battery_level")
public Integer getBatteryLevel() {
return batteryLevel;
}

@JsonProperty("battery_level")
public void setBatteryLevel(Integer batteryLevel) {
this.batteryLevel = batteryLevel;
}

@JsonProperty("var2")
public Integer getVar2() {
return var2;
}

@JsonProperty("var2")
public void setVar2(Integer var2) {
this.var2 = var2;
}

@JsonProperty("var3")
public Integer getVar3() {
return var3;
}

@JsonProperty("var3")
public void setVar3(Integer var3) {
this.var3 = var3;
}

}

在您的 Java 对象和 JSON 就位后,使用 jackson 进行映射 -

ObjectMapper mapper = new ObjectMapper();
String jsonInString = "{'name' : 'mkyong'}";

//JSON from file to Object
User user = mapper.readValue(new File("c:\\user.json"), Example.class);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-16
    • 1970-01-01
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2015-07-05
    相关资源
    最近更新 更多