【问题标题】:JSONObject exceptionsJSONObject 异常
【发布时间】:2011-06-14 16:14:08
【问题描述】:

我正在使用 JSON 数组在层之间来回处理数据。我在 JSONObject 上遇到了一个异常。您能否指导我找到解决此问题的正确调试路径?
第一种方法:

for( Object obj : salesDataArray )
{
 JSONObject salesData = (JSONObject) obj;

我得到的异常:

java.lang.ClassCastException: java.lang.String incompatible with net.sf.json.JSONObject

第二种方法:

for( Object obj : salesDataArray )
{
JSONObject salesData = JSONObject.fromObject(obj);

我得到的异常:

net.sf.json.JSONException: Unquotted string 'undefined'

【问题讨论】:

  • 你试过了吗:String salesData = (String) obj;obj.getClass() 的结果是什么?
  • obj 属于什么类?如果是字符串,它的内容是什么?
  • 嗨,thkala,类是 JSONObject。
    对象类名 >>>>:class net.sf.json.JSONObject

标签: java json jsp


【解决方案1】:

您的salesDataArrayString 对象的数组,而不是JSONObject 对象。这是在哪里填充的?最好的办法是打印出salesDataArray 的值并找出字符串是什么,并查看上游的原因,因为它们是这样设置的。

另外,考虑使用泛型来输入你的salesDataArray,比如

List<JSONObject> salesDataArray = ....  // get the sales data from somewhere

【讨论】:

  • 嗨,Richard,所有数据都来自前端层。
  • 理查德,salesDataArray 是一个 JSONArray
  • 从文档 (json.org/javadoc/org/json/JSONArray.html) 中可以看出,JSONArray 的元素必须是 JSONObjects(例如,参见 get() 上的返回类型)。我想我会尝试一个老式的 for(int i = 0; i
【解决方案2】:
System.out.println((String) obj);

如果您在其中包含“未定义”,那么听起来您首先没有有效的 JSON 数据。 Javascript undefined 就像 Java 中的“null”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多