2016-03-24 70 views
0

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

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

} 

编辑:

所以我试了一下达山提及。但是我一直在得到这个错误。

/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 
+0

除了无用之外看起来很好:“static String fin = api_out.replace(”\\“,”“);”你已经逃过了报价。你到底在期待什么? –

+0

当我运行代码时,它一直抛出一个错误。 – user2628815

+2

请参阅:http://stackoverflow.com/questions/8982631/error-java-lang-runtimeexception-stub-in-android-with-fitnesse-testing 我认为你在Android之外运行你的代码?你需要模拟器来测试你的代码! –

回答

1

有没有必要的string.replace()操作,报价已经逃脱。以下应该工作正常:

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

谢谢Darshan。我会放弃并更新你。 – user2628815

+0

是的,它似乎没有工作。我不断收到我在我的问题的编辑中发布的错误。再次感谢。 – user2628815