gpt4 book ai didi

java - JSON-简单 ClassCastException 从 String 到 JSONObject

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:27 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 对象数组:

{"message":"[\"{\\\"name\\\":\\\"lays\\\",\\\"calories\\\":1.0}\",\"{\\\"name\\\":\\\"lays\\\",\\\"calories\\\":0.33248466}\"]"}

我正在尝试使用以下代码解析它:

Object object = parser.parse ( message );
JSONArray array = (JSONArray) object;
for(int i=0;i < array.size () ; i++)
{
System.out.println(array.get ( i ));//output; {"name":"lays","calories":1.0}
JSONObject jsonObj = ( JSONObject ) array.get ( i );//ClassCastExceptio
String foodName = ( String ) jsonObj.get ( KEY_NAME );
Float calories = (Float) jsonObj.get ( KEY_CARLORIES );
Nutrinfo info = new Nutrinfo(foodName,calories);
data.add ( info );

}

但我在标记行上得到了 ClassCastException。这没有意义: array.get() 返回一个对象,我将其转换为 JSONObject。为什么我会收到此错误。

谢谢。

最佳答案

“message”json 对象中有多个 json 对象。使用此代码检索第一个值(所有这些值都需要一个循环)。看来您可能想要重新安排创建 json 对象的方式。

Object object = parser.parse ( message );
JSONArray array = (JSONArray) object;
for(int i=0;i < array.size () ; i++)
{
JSONArray jsonArray = ( JSONArray ) array.get ( i );
JSONObject jsonObj = (JSONObject) jsonArray.get(0);
String foodName = jsonObj.getString ( KEY_NAME );
Float calories = jsonObj.getFloat ( KEY_CARLORIES );
Nutrinfo info = new Nutrinfo(foodName,calories);
data.add ( info );
}

请记住,使用 JSON 时,每组 {} 括号表示一个单独的 JSON 对象。当处理同一级别的多个对象时,您必须首先获取 JSON 数组(就像对每条消息所做的那样)。

关于java - JSON-简单 ClassCastException 从 String 到 JSONObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17154026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com