无法将org.json.JSONObject转换为java.util.Map
将地图强制转换为android应用程序的JSONObject。生成,但在运行时崩溃。查看Logcat并得到错误: 无法将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
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您能做一个可用方法的屏幕截图吗?