Java中的有序JSON转换,读取JSONObjects的JSONArray

时间:2016-05-24 19:59:16

标签: java arrays json

我将以下JSON发送到Java程序。我输入了这个配置,以便保留我的订单。我正在使用 org.json 库。

“订购的JSON”

    var obj = {
        "params":
        [
            {"base_s" : robot.base.length},
            {"base_k" : robot.base.k},
            {"base_phi" : robot.base.phi},
            {"mid_s" : robot.mid.length},
            {"mid_k" : robot.mid.k},
            {"mid_phi" : robot.mid.phi},
            {"tip_s" : robot.tip.length},
            {"tip_k" : robot.tip.k},
            {"tip_phi" : robot.tip.phi}
        ]
    };

在我将JSON格式化之前: 原始JSON

    var obj = {
        base_s : robot.base.length,
        base_k : robot.base.k,
        base_phi : robot.base.phi,
        mid_s : robot.mid.length,
        mid_k : robot.mid.k,
        mid_phi : robot.mid.phi,
        tip_s : robot.tip.length,
        tip_k : robot.tip.k,
        tip_phi : robot.tip.phi
    };

以下Java代码解释了原始的JSON,但是“Ordered”JSON存在问题。

    JSONArray nameArray = jsonData.names();
    JSONArray valArray = jsonData.toJSONArray(nameArray);

nameArray为["items"],valArray为[[{"base_s":0.314},{"base_k":0.0012},{"base_phi":0.436},{"mid_s":0.314},{"mid_k":0.0012},{"mid_phi":0.436},{"tip_s":0.3139},{"tip_k":0.0012},{"tip_phi":0.436}]]

我很好奇我如何“再一次这样做”以便从数组中提取九个数字。所以我得到类似vals = [0.314, 0.0012, 0.436, 0.314, 0.0012, 0.436, 0.3139, 0.0012, 0.436]的东西,然后我可以变成一个浮点数组。

1 个答案:

答案 0 :(得分:1)

对于订购的JSON,您可以尝试类似以下内容

JSONArray results = obj.getJsonArray("params");
for (int i = 0, size = results.length(); i < size; i++){
  JSONObject objectInArray = results.getJSONObject(i);
  String[] elementNames = JSONObject.getNames(objectInArray);
  for (String elementName : elementNames) {
    String value = objectInArray.getString(elementName); 
    // in value you have your double
  }
}