Java.lang.NoSuchMethodError:org.json.JSONObject.put

8wigbo56  于 2023-05-23  发布在  Java
关注(0)|答案(3)|浏览(221)

我正在开发一个Android库,我在我的测试项目中添加了我的库,现在我有一个错误,无法完成我的测试:

Could not find method org.json.JSONObject.put, referenced from method com.ldm.JsonBuilder.jsonbuilder

Process: , PID: 31181
java.lang.NoSuchMethodError: org.json.JSONObject.put
at com.ldm.JsonBuilder.jsonbuilder(JsonBuilder.java:70)
at com.ldm.TestConnection.TestNow(TestConnection.java:79)
at ldm.eisworld.it.test.MainActivity.onCreate(MainActivity.java:23)
at android.app.Activity.performCreate(Activity.java:5442)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2493)
at android.app.ActivityThread.access$800(ActivityThread.java:166)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1283)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5584)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
at dalvik.system.NativeStart.main(Native Method)

这是我的gradle:

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile files('libs/httpcore-4.4.4.jar')
    compile files('libs/json.jar')
    compile 'org.json:json:20141113'
}

这是我的代码的一部分:

/* Parsing of hash map */
    for (Map.Entry<String, ArrayList<String>> tr : rh.entrySet()) {

        try {
            /* Object that contains URL */
            JSONObject TraceUrl = new JSONObject();
            /* Object that contains nodes for each URL */
            JSONObject TraceNodes = new JSONObject();

            TraceUrl.put("url", tr.getKey());
            TraceUrl.put("nodes", tr.getValue());
            trace.put(TraceUrl);
        } catch (JSONException e) {
            System.out.println("Exception: " + e.toString());
        }

我该怎么解决呢?

fhg3lkii

fhg3lkii1#

您似乎正在导入某种外部json库,该库没有put()方法。
拥有put()的JSONObject是“内置”到Android的,你不需要任何额外的库。

import org.json.JSONObject;

JSONObject jsonObject = new JSONObject();
jsonObject.put("key", "value");

这会成功的

okxuctiv

okxuctiv2#

*Kotlin

很晚了,但我想这可能会对某人有帮助。我有这个错误

No virtual method put(Ljava/lang/String;F)Lorg/json/JSONObject; in class Lorg/json/JSONObject

我正在导入正确的类,而不是导入任何其他相关的第三方库。甚至添加了progaurd规则,但没有任何帮助。
然后我替换了

val orderRequest = JSONObject()
                orderRequest.put("amount", amount)
                orderRequest.put("currency", "INR")
                orderRequest.put("receipt", "order_rcptid_11")

val reqStr = """
                    {
                    "amount" : "$amount",
                    "currency" : "INR",
                    "receipt" : "order_rcptid_11"
                    }
                    """.trimIndent()
                
         val orderRequest = JSONObject(reqStr)
cnh2zyt3

cnh2zyt33#

根据文档,传递给JSONObject.putObject值必须为:
... JSONObject、JSONArray、String、Boolean、Integer、Long、Double、NULL或null。不能是NaN或无穷大。
tr.getValue()的类型为ArrayList<String>。由于这不是列出的类型之一,因此尝试在运行时失败。

相关问题