2012-10-04 74 views
2

我试图将字符串转换为使用下面的代码JSONObject对象,但我得到字符串到JSON的转换问题

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); 
    } 

这里有什么问题?

回答

2

您从错误的包装中导入了JSONObject。改变这一行:

import net.sf.json.JSONObject; 

这样:

import org.json.simple.JSONObject; 
0

实施以下解决方案,你甚至不必理会解析器 ...

的问题这里是你试图将org.json.simple.JSONObject类型的对象投射到net.sf.json.JSONObject。你可能想试试包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,这是SssOooooooo简单

+0

-1:'网.sf.json.JSONObject'不h一个'String'构造函数。 http://json-lib.sourceforge.net/apidocs/jdk15/net/sf/json/JSONObject.html –

+0

我真的很抱歉!我把它收回。哦,我的坏!我只是把'org.codehaus.jettison.json.JSONObject'和'net.sf.json.JSONObject'混淆了。无论如何感谢您指出了这一点。 @大卫格兰特是正确的,我错了。伙计们对于错误的信息感到抱歉。 – Nokia808Freak

+0

我刚纠正它。我希望这有帮助 – Nokia808Freak