0

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)

私はJSONを初めて使用するので、これを理解することは非常に大きな課題であることが証明されているため、これに関する支援をいただければ幸いです。

また、JSONデータは次のように取得されます。

{
  "enabled" : true,
  "email" : "example@gmail.com",
  "firstName" : "example firstname",
  "lastName" : "example lastname",
  "name" : "example fullname",
  "level" : {

これらはJSONオブジェクトであり、JSON配列ではないことを私は知っています。

4

2 に答える 2

0

java.lang.NoClassDefFoundErrorJVMがorg.json.simple.parser.JSONParser実行時に検出できないため、が発生します。ライブラリが適切なディレクトリに含まれていて、クラスパスに追加されていることを確認してください。

于 2012-07-10T10:33:11.657 に答える
0

次のように、文字列を使用してJSonオブジェクトを作成してみませんか。

     JSONObject jsonObject = new JSONObject(result);

次に、次のように目的の値を取得します。

     String name = jsonObject.getString("name");
于 2012-07-10T10:34:17.693 に答える