Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法将org.json.JSONObject转换为java.util.Map_Java_Android_Json - Fatal编程技术网

无法将org.json.JSONObject转换为java.util.Map

无法将org.json.JSONObject转换为java.util.Map,java,android,json,Java,Android,Json,将地图强制转换为android应用程序的JSONObject。生成,但在运行时崩溃。查看Logcat并得到错误: 无法将org.json.JSONObject转换为java.util.Map 以下是相关章节: JSONObject item = new JSONObject(data); Map product = ((Map)item.get("product")); 特别是第二条线让它崩溃了。我注释掉了代码,直到取消注释这一行导致崩溃 它链接到的JSON是 取消映射JS

将地图强制转换为android应用程序的JSONObject。生成,但在运行时崩溃。查看Logcat并得到错误:

无法将org.json.JSONObject转换为java.util.Map

以下是相关章节:

JSONObject item = new JSONObject(data);
Map product = ((Map)item.get("product"));
特别是第二条线让它崩溃了。我注释掉了代码,直到取消注释这一行导致崩溃

它链接到的JSON是

取消映射JSONObject会出现以下错误:

不兼容的类型

必需:java.util.Map

找到:java.lang.Object

更广泛的代码视图:

        TextView parsed = findViewById(R.id.jsonParse);
        String barcodeNum = result.getText();
        String productName = "";

        try {
            URL url = new URL("https://world.openfoodfacts.org/api/v0/product/" + barcodeNum + ".json");
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            InputStream inputStream = httpURLConnection.getInputStream();
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
            String data = "";
            String line = "";

            while (line != null){
                line = bufferedReader.readLine();
                data = data + line;
            }


            JSONObject item = new JSONObject(data);
            final JSONObject product = item.getJSONObject("product");
            final Map<String, Object> map =
                    product.keySet()
                            .stream()
                            .collect(Collectors.toMap(
                                    Function.identity(),
                                    product::get
                            ));
TextView parsed=findviewbyd(R.id.jsonParse);
字符串barcodeNum=result.getText();
字符串productName=“”;
试一试{
URL=新URL(“https://world.openfoodfacts.org/api/v0/product/“+barcodeNum+”.json”);
HttpURLConnection HttpURLConnection=(HttpURLConnection)url.openConnection();
InputStream InputStream=httpURLConnection.getInputStream();
BufferedReader BufferedReader=新的BufferedReader(新的InputStreamReader(inputStream));
字符串数据=”;
字符串行=”;
while(行!=null){
line=bufferedReader.readLine();
数据=数据+行;
}
JSONObject项=新的JSONObject(数据);
最终JSONObject产品=item.getJSONObject(“产品”);
最终地图=
product.keySet()
.stream()
.collect(collector.toMap)(
Function.identity(),
产品::获取
));
不会返回
映射
。相反,它将返回另一个
JSONObject
,它描述嵌套的
产品
属性

你会发现,事实上,它是可以铸造的

final JSONObject product = (JSONObject) item.get("product");

你能做的就是

final JSONObject product = item.getJSONObject("product");
final Map<String, Object> objectMap = product.toMap();
final JSONObject product = item.getJSONObject("product");
final Map<String, Object> map =
        product.keySet()
               .stream()
               .collect(Collectors.toMap(
                       Function.identity(),
                       product::get
               ));
不会返回
映射
。相反,它将返回另一个
JSONObject
,它描述嵌套的
产品
属性

你会发现,事实上,它是可以铸造的

final JSONObject product = (JSONObject) item.get("product");

你能做的就是

final JSONObject product = item.getJSONObject("product");
final Map<String, Object> objectMap = product.toMap();
final JSONObject product = item.getJSONObject("product");
final Map<String, Object> map =
        product.keySet()
               .stream()
               .collect(Collectors.toMap(
                       Function.identity(),
                       product::get
               ));

什么是数据?为什么是地图?@GeorgeHanlon@MS90数据是json内容的解析字符串。什么是数据?为什么映射?@GeorgeHanlon@MS90数据是一个json内容的解析字符串。谢谢。我觉得我在这里很愚蠢,但使用.toMap()会给我:无法解析方法'toMap())'尝试在此处查看:@GeorgeHanlon您能告诉我您使用的是哪个版本的JSON Java吗?toMap方法是最近的,您可能无法在旧版本中使用它。@GeorgeHanlon更新了一种在使用旧版本的JSON-Java.hm时获取映射的方法,奇怪的是,旧版本的JSON Java方法“无法解析符号'jsonObject'”。与.keySet()相同。但它似乎没有.toMap()方法。很抱歉我是新手,但是我该如何检查JSON Java的版本?谢谢你的帮助-非常感谢。@GeorgeHanlon你能做一个可用方法的屏幕截图吗?谢谢。我觉得我在这里很愚蠢,但是使用.toMap()给了我:无法解析方法'toMap()'尝试在此处查看:@GeorgeHanlon您能告诉我您使用的是哪个版本的JSON Java吗?toMap方法是最近才出现的,您可能无法在旧版本中使用它。@GeorgeHanlon更新了一种在使用旧版本的JSON-Java.hm时获取映射的方法,奇怪的是,旧版本的JSON Java方法”无法解析符号“jsonObject”。与.keySet()相同。但它似乎没有.toMap()方法。对于新手,我深表歉意,但我如何检查JSON Java的版本?感谢您的帮助-非常感谢。@GeorgeHanlon您能做一个可用方法的屏幕截图吗?