Javascript 在JSONObject中迭代JSONArray
我有一个Javascript 在JSONObject中迭代JSONArray,javascript,java,json,iteration,Javascript,Java,Json,Iteration,我有一个JSONObject和一个JSONArray,还有一个键。我想在数组中迭代,并在每个JSONObject中找到所有颜色为red的carmodel 这是我到目前为止所拥有的,但它给了我一个JSONException:JSONObject[“color”]未找到 JSONArray arr = responseBody.getJSONArray("carModels"); String redServices = ""; for(int i = 0; i < arr.length();
JSONObject
和一个JSONArray
,还有一个键。我想在数组中迭代
,并在每个JSONObject
中找到所有颜色为red
的carmodel
这是我到目前为止所拥有的,但它给了我一个JSONException:JSONObject[“color”]未找到
JSONArray arr = responseBody.getJSONArray("carModels");
String redServices = "";
for(int i = 0; i < arr.length(); i++)
{
if(arr.getJSONObject(i).get("color").equals("red"))
redServices += arr.getJSONObject(i).toString() + ", ";
}
请查找适用于给定json的以下代码,您可以根据您的实际json进行修改:
public String getRedServicesFromJSON(JSONObject object){
JSONArray arr = object.getJSONArray("carModels");
StringJoiner joiner = new StringJoiner(", ");
for(int i = 0;i < arr.length(); i++){
if("red".equals(arr.getJSONObject(i).getJSONObject(arr.getJSONObject(i).names().getString(0)).get("color")))
joiner.add(arr.getJSONObject(i).toString());
}
return joiner.toString();
}
公共字符串getRedServicesFromJSON(JSONObject对象){
JSONArray arr=object.getJSONArray(“carModels”);
细木工=新细木工(“,”);
对于(int i=0;i
尽管我不喜欢JSONObject
,但您需要考虑模型中JSON键的随机值,例如mazda
或vw
。您可以使用names()
方法查找此值:
JSONArray carModels = responseBody.getJSONArray("carModels");
for (int i = 0; i < carModels.length(); i++) {
JSONObject model = carModels.getJSONObject(i);
JSONArray keys = model.names();
for (int j = 0; j < keys.length(); j++) {
Object key = keys.get(j);
if (model.getJSONObject(key.toString()).get("color").equals("red")) {
joiner.add(key.toString());
}
}
}
System.out.println(joiner);
最好将JSON结构更改为具有可预测的键,例如
{
"carModels": [
{
"brand": "toyota",
"color": "green"
}
...
}
您的问题是,JSON既没有您在应用程序中使用的
服务
字段,也没有您在应用程序中使用的状态
字段code@KarolDowbecki刚刚意识到,现在改变了。我试着概括这个问题,你没有逻辑来处理车名的钥匙。您可能应该重新构造json,使carModels列表中的单个项看起来像:{'color':'red','manufacturer':'tesla'},然后arr.getJSONObject(i).get(“color”).equals(“red”)可以工作字符串连接程序应该使用,“
,但OP可能应该更改json结构。如果我可以,我通过API调用获取“JSONObject”,因此我无法控制json。我必须处理这个问题format@DavidConrad我在帮助他做合乎逻辑的部分。这件事可以由他来做。Thanks@StanY在这种情况下,您可以跳过函数的第一行,并可以传递JSONObject而不是字符串。@StanY根据您的输入进行编辑。我希望这对你有帮助。很有魅力!是否可以过滤结果以仅返回汽车型号?@StanY更新,带有joiner.add
的行已更改
mazda, vw, ford
{
"carModels": [
{
"brand": "toyota",
"color": "green"
}
...
}