如何在java中正确迭代json?
我想写一个cordova插件。 我有以下JSON数据:如何在java中正确迭代json?,java,android,json,cordova,Java,Android,Json,Cordova,我想写一个cordova插件。 我有以下JSON数据: JSONObject obj = {"amount":100, "desc":"blabla",id:123} 我试图迭代JSON键,并将键和值放入intent.putExtra(key,val) 例如: Iterator<String> iter = obj.keys(); while (iter.hasNext()) { key = iter.next(); value = obj.getString(ke
JSONObject obj = {"amount":100, "desc":"blabla",id:123}
我试图迭代JSON键,并将键和值放入intent.putExtra(key,val)
例如:
Iterator<String> iter = obj.keys();
while (iter.hasNext()) {
key = iter.next();
value = obj.getString(key);
intent.putExtra(key, value);
}
任何人都可以告诉我迭代JSON数据并执行
putExtra()
?首先,您提供的JSON无效。应该是这样的:
{"amount":100, "desc":"blabla","id":123}
然后,如注释中所述,在for循环之外创建一个intent变量。
最后,你应该使用
Object value = obj.get(key)
因为值可以是字符串或整数。对Lino答案的扩展 由于
Intent.putExtra(字符串、对象)
不可用,您需要进行以下修改
JSONObject obj = new JSONObject("{" +
"\"amount\": 100," +
"\"desc\": \"blabla\"," +
"\"id\": 123," +
"\"id2\": 123.56" +
"}");
Intent intent = new Intent();
Iterator<String> iter = obj.keys();
while (iter.hasNext()) {
String key = iter.next();
Object value = obj.get(key);
if (value instanceof Float || value instanceof Double) {
intent.putExtra(key, (double) value);
} else if (value instanceof Integer || value instanceof Long) {
intent.putExtra(key, (long) value);
} else if (value instanceof String) {
intent.putExtra(key, (String) value);
} /*else if (more cases go here) {
} */
}
JSONObject obj=新的JSONObject(“{”+
“金额”:100+
“\'desc\':\'blabla\',”+
“\“id\”:123,”+
“\“id2\”:123.56”+
"}");
意图=新意图();
迭代器iter=obj.keys();
while(iter.hasNext()){
String key=iter.next();
对象值=对象获取(键);
if(浮点值实例| |双精度值实例){
意向。额外(键,(双)值);
}else if(整数的值实例| |长的值实例){
意向。putExtra(键,(长)值);
}else if(字符串的值实例){
intent.putExtra(键,(字符串)值);
}/*如果有其他情况(更多案例请点击此处){
} */
}
在何处创建意图
?看看这个。这肯定会帮你的。创建意图对象first@soSlow请考虑接受下面的答案之一,如果它有助于解决这个问题。
JSONObject obj = new JSONObject("{" +
"\"amount\": 100," +
"\"desc\": \"blabla\"," +
"\"id\": 123," +
"\"id2\": 123.56" +
"}");
Intent intent = new Intent();
Iterator<String> iter = obj.keys();
while (iter.hasNext()) {
String key = iter.next();
Object value = obj.get(key);
if (value instanceof Float || value instanceof Double) {
intent.putExtra(key, (double) value);
} else if (value instanceof Integer || value instanceof Long) {
intent.putExtra(key, (long) value);
} else if (value instanceof String) {
intent.putExtra(key, (String) value);
} /*else if (more cases go here) {
} */
}