【问题标题】:Unable to Create JSON Object From String [duplicate]无法从字符串创建 JSON 对象 [重复]
【发布时间】:2016-03-25 06:38:41
【问题描述】:

所以我试图从这个字符串创建一个 JSON 对象,因为我将访问 iTunes 查找 api,但我似乎无法创建 JSONObject。我已经查看了每个基于 android/java 的解决方案,但我似乎无法让它工作。谢谢!

import org.json.JSONException;
import org.json.JSONObject;

public class api_caller {

static String api_out = "{\"wrapperType\":\"track\", \"kind\":\"podcast\", \"collectionId\":274450056, \"trackId\":274450056, \"artistName\":\"Giant Bomb\"}";

static String fin = api_out.replace("\\", "");

public static void main(String[] args) {
    System.out.println(fin);
    try {
        JSONObject jsondata = new JSONObject(fin);
    }catch(JSONException e){
        e.printStackTrace();
    }
}

}

编辑:

所以我已经尝试了 Darshan 提到的内容。但我一直收到这个错误。

/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/bin/java -Didea.launcher.port=7540 "-Didea.launcher.bin.path=/Applications/Android Studio.app/Contents/bin" -Dfile.encoding=UTF-8 -classpath "/Users/jsho/Library/Android/sdk/platforms/android-23/android.jar:/Users/jsho/Library/Android/sdk/platforms/android-23/data/res:/Users/jsho/projects/simple_podcasts/app/build/intermediates/classes/debug:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.2.1/res:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.2.1/jars/classes.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.1/jars/classes.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.1/res:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/support-v4/23.2.1/jars/libs/internal_impl-23.2.1.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.2.1/jars/classes.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/recyclerview-v7/23.2.1/res:/Users/jsho/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/23.2.1/support-annotations-23.2.1.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.2.1/res:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.2.1/jars/classes.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/design/23.2.1/jars/classes.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/design/23.2.1/res:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.2.1/jars/classes.jar:/Users/jsho/projects/simple_podcasts/app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.2.1/res:/Applications/Android Studio.app/Contents/lib/idea_rt.jar" com.intellij.rt.execution.application.AppMain com.example.jsho.simplepod.api_caller
Exception in thread "main" java.lang.RuntimeException: Stub!
    at org.json.JSONObject.<init>(JSONObject.java:7)
{"wrapperType":"track", "kind":"podcast", "collectionId":274450056, "trackId":274450056, "artistName":"Giant Bomb"}
    at com.example.jsho.simplepod.api_caller.main(api_caller.java:20)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)

Process finished with exit code 1

【问题讨论】:

  • 除了没用之外似乎还不错:"static String fin = api_out.replace("\\", "");"你已经转义了引号。你到底在期待什么?
  • 好吧,当我运行代码时,它总是抛出一个错误。
  • 看到这个:stackoverflow.com/questions/8982631/…我想你是在 Android 之外运行你的代码吗?你需要模拟器来测试你的代码!

标签: java android json


【解决方案1】:

不需要string.replace() 操作,引号已经被转义了。以下应该可以正常工作:

System.out.println(api_out);
try {
    JSONObject jsondata = new JSONObject(api_out);
    System.out.println(jsondata);
} catch (JSONException e) {
    e.printStackTrace();
}

【讨论】:

  • 谢谢达山。我会试一试并更新你。
  • 是的,它似乎没有用。我不断收到我在问题编辑中发布的错误。再次感谢。
猜你喜欢
  • 2018-08-11
  • 1970-01-01
  • 1970-01-01
  • 2019-01-07
  • 1970-01-01
  • 2013-11-28
  • 2014-12-23
  • 1970-01-01
  • 2022-01-22
相关资源
最近更新 更多