Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从float[],JSONArray解析中获取数据?_Java_Arrays - Fatal编程技术网

Java 如何从float[],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

我得到一个JSONArray表单的响应,如下所示:

"["37:0.00",
"60:23.50:55.00:22.22:52.00:192.55:20.00"
"61:0.00"]";
在这三行中,第一个数字(37、60、61)是id(type
int
)。 这些特定行的其他数字是值(类型
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;i 感谢您的帮助。

“//如何检查另一个索引中是否有其他值(对于此exmaple索引2”,您可以添加另一个内部循环来迭代数组

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
} 
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,