Java 如何从float[],JSONArray解析中获取数据?
我得到一个JSONArray表单的响应,如下所示:Java 如何从float[],JSONArray解析中获取数据?,java,arrays,Java,Arrays,我得到一个JSONArray表单的响应,如下所示: "["37:0.00", "60:23.50:55.00:22.22:52.00:192.55:20.00" "61:0.00"]"; 在这三行中,第一个数字(37、60、61)是id(typeint)。 这些特定行的其他数字是值(类型float)。 如何将特定ID的这些值设置为float[] 这是我的密码: public void setValuesFromResponse(String response) { deviceList
"["37:0.00",
"60:23.50:55.00:22.22:52.00:192.55:20.00"
"61:0.00"]";
在这三行中,第一个数字(37、60、61)是id(typeint
)。
这些特定行的其他数字是值(类型float
)。
如何将特定ID的这些值设置为float[]
这是我的密码:
public void setValuesFromResponse(String response) {
deviceList = database.getDevices();
List<float[]> parsedData = parse(response);
Log.i("setValFromResp: ", "parsedData --> DONE");
for (int i = 0; i < parsedData.size(); i++) {
int parsedDeviceId = (int) parsedData.get(i)[0]; //get ID
float[] values = parsedData.get(i)[1];
//how to check if there is another value in another index (for this exmaple index 2
}
}
public void setValuesFromResponse(字符串响应){
deviceList=database.getDevices();
List parsedData=parse(响应);
Log.i(“setvalfromrep:,“parsedData-->完成”);
for(int i=0;i
以下是解析方法:
public List<float[]> parse(String json)
{
List<float[]> list = new ArrayList<>();
try {
JSONArray array = new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
String dataByDevice = array.getString(i);
String[] values = dataByDevice.split(":");
list.add(new float[values.length]);
for (int j = 0; j < values.length; j++) {
list.get(i)[j] = Float.parseFloat(values[j]);
}
}
return list;
}
公共列表解析(字符串json)
{
列表=新的ArrayList();
试试{
JSONArray数组=新的JSONArray(json);
对于(inti=0;ifor (int i = 0; i < parsedData.size(); i++) {
int parsedDeviceId = (int) parsedData.get(i)[0]; //get ID
float[] values = parsedData.get(i)[1];
//how to check if there is another value in another index (for this exmaple index 2
}
for(int i=0;i
像这样:
for (int i = 0; i < parsedData.size(); i++) {
int parsedDeviceId = (int) parsedData.get(i)[0]; //get ID
for(int j = 1; j < parsedData.get(i).length; j++)
{
//process parsedData.get(i)[j] here
}
}
for(int i=0;i
由于您在一个数组中拥有包括id
在内的所有数据,因此只需跳过id
即可获得值
public List<float[]> parse(String json) {
List<float[]> list = new ArrayList<>();
JSONArray array = new JSONArray(json);
for (int i = 0; i < array.length(); i++) {
String dataByDevice = array.getString(i);
String[] values = dataByDevice.split(":");
list.add(new float[values.length]);
for (int j = 0; j < values.length; j++) {
list.get(i)[j] = Float.parseFloat(values[j]);
}
}
return list;
}
public void setValuesFromResponse(String response) {
List<float[]> parsedData = parse(response);
for(int i = 0; i < parsedData.size(); ++i) {
int parsedDeviceId = (int) parsedData.get(i)[0]; // get ID
System.out.print(parsedDeviceId + " : ");
for(int j = 0; j < parsedData.get(i).length; ++j) {
System.out.print(parsedData.get(i)[j] + ", ");
}
System.out.println();
}
}
在所有情况下,输出为
String response = "[\"37:0.00\",\"60:23.50:55.00:22.22:52.00:192.55:20.00\",\"61:0.00\"]";
将是
37 : 0.0,
60 : 23.5, 55.0, 22.22, 52.0, 192.55, 20.0,
61 : 0.0,
您的
parse()
方法中有什么?public List parse(String json){List List List=new ArrayList();尝试{JSONArray array=new JSONArray(json);for(int i=0;i解析JSON时,你应该弄清楚如何获取id和值,然后你可以将id、值放在hashmap或其他东西中……甚至可以按照我想要的方式从float[]获取数据?从JSON对象获取id和值是什么意思?我想这可能……我不确定你在问什么?
String response = "[\"37:0.00\",\"60:23.50:55.00:22.22:52.00:192.55:20.00\",\"61:0.00\"]";
37 : 0.0,
60 : 23.5, 55.0, 22.22, 52.0, 192.55, 20.0,
61 : 0.0,