Java 如何将我的JSON属性之一转换为数组?
如何将我的“威胁”转化为阵列 这是我的JSONJava 如何将我的JSON属性之一转换为数组?,java,android,json,gson,Java,Android,Json,Gson,如何将我的“威胁”转化为阵列 这是我的JSON [ { "SensorType": "Visual", "Latitude": 1.3184418, "Longitude": 103.6282628, "Threat": [ { "ThreatId": 56332, "Timestamp": "2018-05-02T13:15:43.69
[
{
"SensorType": "Visual",
"Latitude": 1.3184418,
"Longitude": 103.6282628,
"Threat": [
{
"ThreatId": 56332,
"Timestamp": "2018-05-02T13:15:43.6964862+08:00",
"Latitude": 0,
"Longitude": 0,
"Bearing": 22.0,
"FOV": 10.0,
"ObjectId": "5320079"
}
]
}
]
这是我的Java文件
public class Threat {
//public boolean IsNewDetection;
public String SystemId;
public String SystemName;
public String SensorType;
public Double Latitude;
public Double Longitude;
public ThreatTimeDetail Threat = new ThreatTimeDetail();
public class ThreatTimeDetail {
public Integer ThreatId;
public Date Timestamp;
public Double Latitude;
public Double Longitude;
public Float Bearing;
public Float FOV;
public String ObjectId;
}
public transient Date Timestamp;
public transient Date mTimestamp;
public transient boolean isUpdated;
}
这是我的请求威胁Java文件
bufferedReader = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
if (bufferedReader != null) {
//not working
Threat[] Sensorarray = new GsonBuilder()
.create()
.fromJson(bufferedReader, Threat[].class);
}
错误状态:由以下原因引起:java.lang.IllegalStateException:应为BEGIN_对象,但在第1行第80列路径$[0]处为BEGIN_数组。威胁
位于com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
如果我从JSON文件中删除我的“Threat:”后面的[],它工作正常
发生这种情况的原因以及我如何解决它?您的
威胁
字段定义应为:
public ThreatTimeDetail[] Threat;
您的json包含数组数据,但您正在映射到单个对象实例,因此出现了错误。这里的问题是您试图从json转换数组:
[
{
... ,
"Threat": [ <<<<<<<<<<<<<
{
"ThreatId": 56332,
"Timestamp": "2018-05-02T13:15:43.6964862+08:00",
... ,
"ObjectId": "5320079"
}
] <<<<<<<<<<<<<<
}
]
解决方案是创建一个数组而不是简单的对象:
public ThreatTimeDetail[] Threat = new ThreatTimeDetail[50];
public ThreatTimeDetail[] Threat = new ThreatTimeDetail[50];