Java 在Android中将动态平面JSON转换为层次JSON
又是我!根据其他程序员的建议,我应该更改JSON结构以填充可扩展的ListView。 这是我从HTTP Post获得的字符串:Java 在Android中将动态平面JSON转换为层次JSON,java,android,json,Java,Android,Json,又是我!根据其他程序员的建议,我应该更改JSON结构以填充可扩展的ListView。 这是我从HTTP Post获得的字符串: [{"titulo":"prueba1","nombrelinea":"cortecaballero","monto":"12"}, {"titulo":"prueba1","nombrelinea":"cortedama","monto":"15"}, {"titulo":"prueba1","nombrelinea":"corteni
[{"titulo":"prueba1","nombrelinea":"cortecaballero","monto":"12"},
{"titulo":"prueba1","nombrelinea":"cortedama","monto":"15"},
{"titulo":"prueba1","nombrelinea":"corteniño","monto":"10"},
{"titulo":"prueba2","nombrelinea":"tintecaballero","monto":"12"},
{"titulo":"prueba2","nombrelinea":"tintedama","monto":"15"},
{"titulo":"prueba2","nombrelinea":"tinteniño","monto":"10"},
{"titulo":"prueba3","nombrelinea":"secadocaballero","monto":"12"},
{"titulo":"prueba3","nombrelinea":"secadodama","monto":"15"},
{"titulo":"prueba3","nombrelinea":"secadoniño","monto":"10"}]
但我需要它看起来像这样:
[{"titulo":"prueba1","productos":[{"nombrelinea":"cortecaballero","monto":"12"},
{"nombrelinea":"cortedama","monto":"15"},
{"nombrelinea":"corteniño","monto":"10"}]},{"titulo":"prueba2","productos":
[{"nombrelinea":"tintecaballero","monto":"12"},
{"nombrelinea":"tintedama","monto":"15"},
{"nombrelinea":"tinteniño","monto":"10"}]},{"titulo":"prueba3","productos":
[{"nombrelinea":"secadocaballero","monto":"12"},
{"nombrelinea":"secadodama","monto":"15"},
{"nombrelinea":"secadoniño","monto":"10"}]}]
在JAVA/Android中,有没有一种方法可以这样重新排列JSON字符串?这应该可以做到:
public JSONArray convertMyCrappyJSON(JSONArray originalArray){
JSONArray newArray = new JSONArray();
for(int i = 0; i < originalArray.length(); i++){
try{
JSONObject currentObject = originalArray.getJSONObject(i);
JSONObject mappedObj = findObjectInAdded(newArray, currentObject.getString("titulo"));
if(mappedObj == null){
JSONArray newSubArray = new JSONArray();
mappedObj = new JSONObject();
mappedObj.put("titulo", currentObject.getString("titulo"));
JSONObject productObj = new JSONObject();
productObj.put("nombrelinea", currentObject.getString("nombrelinea"));
productObj.put("monto", currentObject.getString("monto"));
newSubArray.put(productObj);
mappedObj.put("productos", newSubArray);
}
else{
JSONObject productObj = new JSONObject();
productObj.put("nombrelinea", currentObject.getString("nombrelinea"));
productObj.put("monto", currentObject.getString("monto"));
mappedObj.getJSONArray("productos").put(productObj);
}
}
catch(Exception e){
}
}
return newArray;
}
public JSONObject findObjectInAdded(JSONArray updatedArray, String titleToSearchFor) throws JSONException{
for(int i = 0; i < updatedArray.length(); i++){
if(updatedArray.getJSONObject(i).getString("titulo").equals(titleToSearchFor)) return updatedArray.getJSONObject(i);
}
return null;
}
publicjsonarray convertMyCrappyJSON(JSONArray originalArray){
JSONArray newArray=新的JSONArray();
对于(int i=0;i
注意,它可能需要一些额外的编辑,但这应该会让您走上正轨。那么您基本上得到了一个jsonarray对象,并希望它们按产品分组
您是否考虑过按原样将服务器输入解析为json对象,创建另一个json对象,并根据产品对它们进行分组。如果json字符串是您的最终需求,您可以将第二个json OBJ转换为字符串,并将其发送给自定义解析器(如果有)。感谢您的快速回答!Eclipse with Android Developer Tools v22.2.1-833290是否要重新排列由该字符串填充的java对象上的json字符串?这就是我想要的:-动态获取json字符串-重新排列-获取重新排列的字符串以将其发送给解析器。可以吗?谢谢!我正在测试它,现在我如何打印新数组的字符串?我试过使用字符串s=newArray.toString();TextView text=(TextView)findViewById(R.id.texto);text.setText(s);但是它给了我一个来自ADT.Ell的错误,我已经尝试在我的mainactivity上实现代码,但是对于我现有的代码来说似乎无法实现。有没有关于如何包含它的建议?