java.lang.String 不能转换为 org.json.simple.JSONObject simple-json

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/25567041/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 00:40:28  来源:igfitidea点击:

java.lang.String cannot be cast to org.json.simple.JSONObject simple-json

javajsonsimplejson

提问by Roshan Wijesena

I am getting strange problem while trying to parse a simple json using simple-json by google.

我在尝试使用 Google 的 simple-json 解析一个简单的 json 时遇到了奇怪的问题。

Here is my code which is not working:

这是我的代码不起作用:

String s = args[0].toString();
JSONObject json = (JSONObject)new JSONParser().parse(s);

When I execute, it will give me the exception java.lang.String cannot be cast to org.json.simple.JSONObject

当我执行时,它会给我异常 java.lang.String cannot be cast to org.json.simple.JSONObject

But when I hard code json directly like below its working fine. Wat could be the reason?

但是当我直接像下面那样硬编码 json 时,它的工作正常。Wat可能是原因?

JSONObject json = (JSONObject)new JSONParser().parse("{\"application\":\"admin\",\"keytype\":\"PRODUCTION\",\"callbackUrl\":\"qwerewqr;ewqrwerq;qwerqwerq\",\"authorizedDomains\":\"ALL\",\"validityTime\":\"3600000\",\"retryAfterFailure\":true}");

UPDATE

更新

When I print s, it will give me the output below:

当我打印 s 时,它会给我以下输出:

"{\"application\":\"admin\",\"keytype\":\"PRODUCTION\",\"callbackUrl\":\"qwerewqr;ewqrwerq;qwerqwerq\",\"authorizedDomains\":\"ALL\",\"validityTime\":\"3600000\",\"retryAfterFailure\":true}"

采纳答案by Ankur Singhal

I ran this through eclipse by providing argumentsin run configuration.

我通过提供运行这个月食通过argumentsrun configuration

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

Output

输出

=>{"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"}

回答by Shailendra

Try this

尝试这个

package com.test;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class JSONTest {    

        public static void main(String[] args) {

            String s = args[0];
            try {
                JSONObject json = (JSONObject) new JSONParser().parse(s);
                System.out.println(json);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }

Then on command line

然后在命令行

java -classpath  ".;json-simple-1.1.1.jar" com.test.JSONTest {\"application\":\"admin\",\"keytype\":\"PRODUCTION\",\"callbackUrl\":\"qwerewqr;ewqrwerq;qwerqwerq\",\"authorizedDomains\":\"ALL\",\"validityTime\":\"3600000\",\"retryAfterFailure\":true}

The out put is

输出是

{"validityTime":"3600000","callbackUrl":"qwerewqr;ewqrwerq;qwerqwerq","application":"admin","retryAfterFailure":true,"authorizedDomains":"ALL","keytype":"PRODUCTION"}