我在尝试使用 google 的 simple-json 解析一个简单的 json 时遇到了一个奇怪的问题。
这是我的代码,它不起作用:
String s = args[0].toString();
JSONObject json = (JSONObject)new JSONParser().parse(s);
当我执行时,它会给我异常 java.lang.String cannot be cast to org.json.simple.JSONObject
但是当我像下面这样直接对 json 进行硬编码时,它工作正常。可能是什么原因?
JSONObject json = (JSONObject)new JSONParser().parse("{\"application\":\"admin\",\"keytype\":\"PRODUCTION\",\"callbackUrl\":\"qwerewqr;ewqrwerq;qwerqwerq\",\"authorizedDomains\":\"ALL\",\"validityTime\":\"3600000\",\"retryAfterFailure\":true}");
更新
当我打印 s 时,它会给我以下输出:
"{\"application\":\"admin\",\"keytype\":\"PRODUCTION\",\"callbackUrl\":\"qwerewqr;ewqrwerq;qwerqwerq\",\"authorizedDomains\":\"ALL\",\"validityTime\":\"3600000\",\"retryAfterFailure\":true}"
最佳答案
我通过在 run configuration
中提供 arguments
来运行它。
public static void main(String[] args) {
String s = args[0].toString();
System.out.println("=>" + s);
try {
JSONObject json = (JSONObject) new JSONParser().parse(s);
System.out.println(json);
} catch (ParseException e) {
e.printStackTrace();
}
}
输出
=>{"application":"admin","keytype":"PRODUCTION","callbackUrl":"qwerewqr;ewqrwerq;qwerqwerq","authorizedDomains":"ALL","validityTime":"3600000","retryAfterFailure":true}
{"validityTime":"3600000","callbackUrl":"qwerewqr;ewqrwerq;qwerqwerq","application":"admin","retryAfterFailure":true,"authorizedDomains":"ALL","keytype":"PRODUCTION"}
关于java.lang.String 无法转换为 org.json.simple.JSONObject simple-json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25567041/