java - JSONObject getString 在第一次运行时返回 null
问题描述
我有这个String data = "[ {\"pname\":\"7\", \"qty\":\"222\"}, {\"pname\":\"8\", \"qty\":\"5\"}, {\"pname\":\"10\", \"qty\":\"65\"}, ]" ;
在数组列表中,我想将它们放在每个循环的变量上并将其保存到数据库中,但是现在我出于调试目的执行此代码,因为在代码的第一个循环中,它应该输出“数量”值,但它是一个像这样的空值,但{"pname":"7","qty":"222"} null
在下一次循环运行时它输出这个{"pname":"8","qty":"5"} 222
似乎在第二个循环上,第一个对象的数量值然后在第二个循环上被采用,最终输出是这个
{"pname":"7","qty":"222"} null {"pname":"8","qty":"5"} 222 {"pname":"10","qty":"65"} 5
这是我拥有的代码
String data = "[ {\"pname\":\"7\", \"qty\":\"222\"}, {\"pname\":\"8\", \"qty\":\"5\"}, {\"pname\":\"10\", \"qty\":\"65\"}, ]" ;
HashMap<String, String> item = new HashMap<String, String>();
JSONArray jsonArray = new JSONArray(data);
JSONObject jsonObject = new JSONObject();
ArrayList<HashMap> mylist = new ArrayList<HashMap>();
String txtPname = "", txtQty = "";
if (jsonArray == null) {
System.out.println("json is empty");
} else {
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
txtPname = item.put("pname", jsonObject.getString("pname"));
txtQty = item.put("qty", jsonObject.getString("qty"));
output.append(jsonObject).append(" ");
output.append(txtQty).append(" ");
}
}
谁能帮我解决这个问题?任何帮助将不胜感激,谢谢!!!
解决方案
您为 txtQty 分配了错误的值,而不是 JSONObject 中的当前值:
HashMapPut
方法(来自 Docs):
回报:
与 key 关联的前一个值,如果没有 key 映射,则返回 null。(返回 null 还可以指示映射先前将 null 与 key 关联。)
这就是为什么你第一次尝试得到 null 而第二次得到 222 的原因。
以下代码将为您提供所需的结果:
String data = "[ {\"pname\":\"7\", \"qty\":\"222\"}, {\"pname\":\"8\", \"qty\":\"5\"}, {\"pname\":\"10\", \"qty\":\"65\"}, ]" ;
HashMap<String, String> item = new HashMap<String, String>();
JSONArray jsonArray = new JSONArray(data);
JSONObject jsonObject = new JSONObject();
ArrayList<HashMap> mylist = new ArrayList<HashMap>();
String txtPname = "", txtQty = "";
if (jsonArray == null) {
System.out.println("json is empty");
} else {
for (int i = 0; i < jsonArray.length(); i++) {
jsonObject = jsonArray.getJSONObject(i);
txtPname = item.put("pname", jsonObject.getString("pname"));
txtQty = item.put("qty", jsonObject.getString("qty"));
output.append(jsonObject).append(" ");
output.append(jsonObject.getString("qty")).append(" ");
}
}
推荐阅读
- r - 如何制作龙卷风图或蝴蝶图?
- karate - 调用功能文件时出现 java.lang.nullpointer 异常
- pdf - 从我的 angular7 应用程序下载 PDF 时,如何解决 IE 浏览器中的错误“访问被拒绝”?
- c# - 类库来自 Mono 的不同步警告
- c - c - 理解定点位模型
- java - 如何修复 JPA/Hibernate 错误,找不到表信息?
- wordpress - 显示包含特定单词或单词的所有 wordpress 标签
- typescript - TypeScript 编译器用随机依赖导入替换简单的推断类型
- rust - 使用不稳定库功能“iter_nth_back”的 Rust 包
- firebase - Firebase 存储 SDK 在 Unity Web Build 中不起作用