如何在java中正确迭代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

我想写一个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(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) {

            } */
        }