android - 将 jsonObject 转换为字符串 jsonarray 并在对话框中显示的问题
问题描述
我需要帮助以在对话框中显示数组 3 项
数组中的项目:InvernaderoId、Name 和 Invernarder
我在将 jsonobject 转换为 jsonarray 时遇到问题
json对象:
{"data":[{"invernaderoId":"1","name":"inver B","Invernarder":"inv1"},{"invernaderoId":"2","name":"inver C","Invernarder":"inv2"},{"invernaderoId":"3","name":"inv13","Invernarder":"inv3"},{"invernaderoId":"4","name":"inv14 A","Invernarder":"HTFRA14A"}]}
转换为 JsonArrayJSONArray arr = js.getJSONArray("data");
结果示例:
[{"invernaderoId":"1","name":"inver B","Invernarder":"inv1"},{"invernaderoId":"2","name":"sd 12 C","Invernarder":"HTESP12C"},{"invernaderoId":"3","name":"s13","Invernarder":"sd"},{"invernaderoId":"4","name":"ds 14 A","Invernarder":"ds"}]
编码替换数组字符串:
String[] arr2 = arr.toString().replace("},{", " ,").split(" ");
和
final String[] employes= arr2;
代码对话框:
new AlertDialog.Builder(getContext())
.setTitle("Selected one")
.setSingleChoiceItems(employes, itemSelected, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int selectedIndex) {
String nombreselect = employes[selectedIndex];
employes.setText(nombreselect);
}
})
.setPositiveButton("Ok", null)
.setNegativeButton("Cancel", null)
.show();
}
});
解决方案
您可以遍历 JSONArray 元素并将它们添加到 String 数组中,然后使用此 String 数组提供 AlertDialg
final String jsonResponse = "{ \"data\":[ {\n" +
" \"invernaderoId\":\"1\",\n" +
" \"name\":\"inver B\",\n" +
" \"Invernarder\":\"inv1\"\n" +
" \n" +
"},\n" +
" {\n" +
" \"invernaderoId\":\"2\",\n" +
" \"name\":\"inver C\",\n" +
" \"Invernarder\":\"inv2\"\n" +
" \n" +
"},\n" +
" {\n" +
" \"invernaderoId\":\"3\",\n" +
" \"name\":\"inv13\",\n" +
" \"Invernarder\":\"inv3\"\n" +
" \n" +
"},\n" +
" {\n" +
" \"invernaderoId\":\"4\",\n" +
" \"name\":\"inv14 A\",\n" +
" \"Invernarder\":\"HTFRA14A\"\n" +
" \n" +
"}\n" +
" \n" +
"]\n" +
"}";
try {
JSONObject js = new JSONObject(jsonResponse);
JSONArray arr = js.getJSONArray("data");
String[] list = new String[arr.length()];
for (int i = 0; i <= arr.length() - 1; i++) {
JSONObject element = arr.getJSONObject(i);
String InvernaderoId = "\"invernaderoId\":\"" + element.getString("invernaderoId") + "\", ";
String Name = "\"name\":\"" + element.getString("name") + "\", ";
String Invernarder = "\"Invernarder\":\"" + element.getString("Invernarder") + "\"";
list[i] = InvernaderoId + Name + Invernarder;
}
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Title")
.setSingleChoiceItems(list, -1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int position) {
Toast.makeText(getContext(), "Position: " + position, Toast.LENGTH_SHORT).show();
}
}).setPositiveButton("Ok", null)
.setNegativeButton("Cancel", null)
.show();
} catch (JSONException e) {
e.printStackTrace();
}
这是结果
推荐阅读
- django - 计算 Django 中多对多字段对字符串表示的使用
- reactjs - 饼图标签在 ReactJS 中不可见
- php - Symfony - 查询构建器返回最接近的数据
- c# - 在 C# 的 smtp 邮件中附加 excel 文件
- angular - Angular 6 Reactive Form 字段在首次显示时显示 [object object]
- python - 运行 tf.estimator.train 100 步时,仅在 tensorboard 中看到一个步骤
- ios - 为什么clang-formatter断线?
- r - 如何在 igraph 上显示特定标签?
- azure - AzureDB 中 XP_CMDSHELL 的等价物
- assembly - "lea eax, [eax*4]" 中的 lea 是否加载值?