我正在将以下 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,但对“有序”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]
的东西,然后我可以将其转换为 float 组。
最佳答案
对于有序的 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
}
}
关于java - Java 中的有序 JSON 转换,读取 JSONObjects 的 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37422780/