2

我正在尝试JSONObject使用以下代码将字符串转换为对象,但我得到了

Exception in thread "main" java.lang.ClassCastException: 
org.json.simple.JSONObject cannot be cast to net.sf.json.JSONObject .

来源:

import net.sf.json.JSONObject;
import org.json.simple.parser.JSONParser;
    public static void run(JSONObject jsonObject) {
        System.out.println("in run--");

    }

    public static void main(String[] args) throws Exception {
        System.out.println("here");
        String json = "{\"task\": \"com.ge.dbt.workers.surveytoexcel.worker.SurveyWorker\",\"prod_id\": 12345,\"survey_id\": 5666,\"person_id\": 18576567,\"req_date\": \"12\12\2012\"}";
        JSONObject jsonObj;
        JSONParser parser = new JSONParser();

        Object obj = parser.parse(json);

        jsonObj = (JSONObject) obj;

        run(jsonObj);
    }

这里有什么问题?

4

2 回答 2

2

JSONObject从错误的包中导入。更改此行:

import net.sf.json.JSONObject;

对此:

import org.json.simple.JSONObject;
于 2012-10-04T12:54:34.220 回答
0

实施以下解决方案,您甚至不必费心解析器...

这里的问题是你试图将一个类型的对象org.json.simple.JSONObject转换为net.sf.json.JSONObject. 你可能想试试 The package org.codehaus.jettison.json.JSONObject。这足以完成所有必需的事情。

简单的例子

首先,准备一个字符串:

String jStr = "{\"name\":\"Fred\",\"Age\":27}";

现在,要解析String对象,U 只需将字符串传递给JSONObject();构造函数方法

JSONObject jObj = new JSONObject(jStr);

那应该这样做,瞧!你有一个 JSONObject。现在你可以随心所欲地玩它了。

怎么这么简单不是吗?

代码的修改版本可能如下所示

import net.sf.json.JSONObject;

import org.codehaus.jettison.json.JSONObject;
public static void run(JSONObject jsonObject) {
    System.out.println("in run-- "+jsonObject.getInt("person_id"));
}

public static void main(String[] args) throws Exception {
    System.out.println("here");
    String json = "{\"task\": \"com.ge.dbt.workers.surveytoexcel.worker.SurveyWorker\",\"prod_id\": 12345,\"survey_id\": 5666,\"person_id\": 18576567,\"req_date\": \"12\12\2012\"}";
    JSONObject jsonObj = new JSONObject(json);
    run(jsonObj);
}

使用 JSON,这很简单

于 2012-10-04T13:06:23.123 回答