2012-07-10 8 views
0

URL에서 가져온 데이터에서 생성 한 문자열에서 JSON 데이터를 가져 오려고합니다. 지금까지 내가 내 코드에있는 것입니다 :URL에서 가져온 문자열에서 JSON 객체 가져 오기

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    final TextView tv = (TextView)findViewById(R.id.result); 

     StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
     StrictMode.setThreadPolicy(policy); 

     String username = "username"; 
     String password = "password"; 
     String url = "http://www.example.com/api/core/v1/my/"; 
     String unp = username+":"+password; 


     class MyUser { 
       public String firstName; 
       public String lastName; 
     } 


     try { 
      HttpClient client = new DefaultHttpClient(); 
      HttpGet header = new HttpGet(url); 
      String encoded_login = Base64.encodeToString(unp.getBytes(), Base64.NO_WRAP); 
      header.setHeader(new BasicHeader("Authorization", "Basic "+encoded_login)); 
      HttpResponse response = client.execute(header); 
      HttpEntity entity = response.getEntity(); 

      BufferedReader reader = new BufferedReader(new InputStreamReader(entity.getContent())); 
      for (String line; (line = reader.readLine()) != null;line.replaceAll("throw 'allowIllegalResourceCall is false.';", "")) { 
       Vector<Object> vector = new Vector<Object>(); 
       vector.add(line); 
       String result = vector.toString(); 


       JSONObject json = (JSONObject)new JSONParser().parse(result); 
       System.out.println("name=" + json.get("name")); 
       System.out.println("width=" + json.get("width")); 

       System.out.println(line); 
      }  


     } catch (Exception e) { 
      e.printStackTrace(); 
      Log.d(MY_APP_TAG, "Error e: " + e); 
     } 

     } 

이 아래로 올바른 JSON 데이터를 당기고,하지만 때마다 나는 다음과 같은 얻고 데이터 분석을 시도 :

E/AndroidRuntime(923): FATAL EXCEPTION: main 
E/AndroidRuntime(923): java.lang.NoClassDefFoundError: org.json.simple.parser.JSONParser 
E/AndroidRuntime(923): at basic.authentication.BasicAuthenticationActivity.onCreate(BasicAuthenticationActivity.java:85) 
E/AndroidRuntime(923): at android.app.Activity.performCreate(Activity.java:4465) 
E/AndroidRuntime(923): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
E/AndroidRuntime(923): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920) 
E/AndroidRuntime(923): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
E/AndroidRuntime(923): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
E/AndroidRuntime(923): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
E/AndroidRuntime(923): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime(923): at android.os.Looper.loop(Looper.java:137) 
E/AndroidRuntime(923): at android.app.ActivityThread.main(ActivityThread.java:4424) 
E/AndroidRuntime(923): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime(923): at java.lang.reflect.Method.invoke(Method.java:511) 
E/AndroidRuntime(923): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
E/AndroidRuntime(923): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
E/AndroidRuntime(923): at dalvik.system.NativeStart.main(Native Method) 

I을 JSON에 익숙하지 않아서이 사실을 알아내는 것이 정말 큰 도전 과제임을 입증하고 있으므로 이에 대한 도움을 많이 받으실 수 있습니다.

는 또한, JSON 데이터는 다음과 같이 통해 제공 :

{ 
    "enabled" : true, 
    "email" : "[email protected]", 
    "firstName" : "example firstname", 
    "lastName" : "example lastname", 
    "name" : "example fullname", 
    "level" : { 

나는 이러한 JSON 객체가 아닌 JSON의 배열 인 것을 알고있다.

+0

기본 오류 :'자바. lang.NoClassDefFoundError' - 즉 JSON 라이브러리를 찾을 수 없습니다. 다른 JSON 구현을 다운로드했는데 프로젝트의'libs' 폴더에 .jar 파일을 넣지 않았습니까? – Jens

+0

나는 이것을 볼 수 있었고 모든 것이 정확하다는 것을 알았습니다. 저는 지금 당장이 것을 정말로 혼동합니다. JSON이 나를 미치게 만듭니다. –

+0

사용중인 타사 라이브러리를 제거하는 것으로 시작하십시오. 안드로이드는 (기본) JSON 파서 (org.json 패키지에 있음)를 이미 가지고있다. 두 번째로 HTTP 코드가 엉망입니다. HTTP 다운로드를 AsyncTask로 옮길 필요가 있습니다. 그리고 응답을 String으로 변환하는 방법은 기껏해야 역기능입니다. ** 당신은 ** org.apache .http.util.EntityUtils # toString (HttpEntity)'메서드 (SDK에도 포함됨) – Jens

답변

0

왜 이렇게, 당신의 문자열을 사용하여 JSON 객체를 생성하지 않습니다

이제
 JSONObject jsonObject = new JSONObject(result); 

가 원하는 값과 같이 얻을 :

 String name = jsonObject.getString("name"); 
0

JVM이 런타임에 org.json.simple.parser.JSONParser을 찾을 수 없기 때문에 java.lang.NoClassDefFoundError이 표시됩니다. 라이브러리가 적절한 디렉토리에 포함되어 있고 클래스 경로에 추가되었는지 확인하십시오.

+0

이 가져 오기를 포함 시켰지만 여전히 동일합니다. 내가 잘못하고있는 코드에 뭔가 있다고 생각합니까? –