Android 如何检查json字符串值

Android 如何检查json字符串值,android,json,getjson,Android,Json,Getjson,如何检查json字符串值,我有2个json,我想检查标志是否等于p orM {"page_menu":{"flag":"M"},"menu":[{"pid":"0","name":"Home","refid":"1","ord_field":"1"},{"pid":"0","name":"About Us","refid":"2","ord_field":"2"},{"pid":"0","name":"Services","refid":"3","ord_field":"3"},{"pid":"

如何检查json字符串值,我有2个json,我想检查标志是否等于p orM

{"page_menu":{"flag":"M"},"menu":[{"pid":"0","name":"Home","refid":"1","ord_field":"1"},{"pid":"0","name":"About Us","refid":"2","ord_field":"2"},{"pid":"0","name":"Services","refid":"3","ord_field":"3"},{"pid":"0","name":"Products","refid":"4","ord_field":"4"}]}


{"page_menu":{"flag":"P"},"page":[{"name":"Home"}]}
我的代码在这里。我正在创建关于Web服务的动态按钮。在这里,else部分仅起作用。如果我单击包含子元素的按钮,则它起作用,但其他部分标记p,页面json不起作用

public class MainActivity extends Activity {
 String url = "http://10.0.2.2:80/android_connect/home.php";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    new LongOperation().execute(url);

    }

private class LongOperation  extends AsyncTask<String, Void, Void> {
    private final HttpClient Client = new DefaultHttpClient();
    private String Content;
    private String Error = null;
    private ProgressDialog Dialog = new ProgressDialog(MainActivity.this);
    String data ="";

    TextView text=(TextView) findViewById(R.id.textView1);
    int sizeData = 0;
    private View addButton; 

    protected void onPreExecute() {

         Dialog.setMessage("Please wait..");
         Dialog.show();

          }

    // Call after onPreExecute method
    protected Void doInBackground(String... urls) {
            /************ Make Post Call To Web Server ***********/
      BufferedReader reader=null;
              // Send data
            try
            {
                // Defined URL  where to send data
               URL url = new URL(urls[0]);

              // Send POST data request
              URLConnection conn = url.openConnection();
              conn.setDoOutput(true);
              OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
              wr.write( data );
              wr.flush();
              // Get the server response
              reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
              StringBuilder sb = new StringBuilder();
              String line = null;
                   // Read Server Response
                while((line = reader.readLine()) != null)
                    {
                           // Append server response in string
                           sb.append(line + "");
                   }

                // Append Server Response To Content String
               Content = sb.toString();
            }
            catch(Exception ex)
            {
                Error = ex.getMessage();
            }
            finally
            {
                try
                {
                           reader.close();
                }
                     catch(Exception ex) {}
            }

          return null;
  }

    protected void onPostExecute(Void unused) {

        Dialog.dismiss();
              if (Error != null) {
                  text.setText("Output : "+Error);

        } else {


             String OutputData = " ";
            JSONObject jsonResponse;
            //String Data = " ";
            try {

             jsonResponse = new JSONObject(Content);

             JSONObject jsonMainNode = jsonResponse.optJSONObject("page_menu");

            String Data = jsonMainNode.getString("flag");



            if(Data.equalsIgnoreCase("P")) 



                  {                                     

                Toast.makeText(getApplicationContext(),"flag"+Data+"selected", Toast.LENGTH_SHORT).show();              

                JSONArray jsonMainNode1 = jsonResponse.optJSONArray("page");


               TextView text=(TextView) findViewById(R.id.textView1);

               String strName=text.getText().toString();
               Intent in = new Intent(getApplicationContext(),second.class);
                in.putExtra("NAME", strName);
                startActivity(in);



                String Name =jsonMainNode1.toString();

                      OutputData = Name; 
                      text.setText(OutputData);

            }


           else if (Data.equalsIgnoreCase("M"))    

            {                             
                JSONArray jsonMainNode1 = jsonResponse.getJSONArray("menu");

             int lengthJsonArr = jsonMainNode1.length(); 
               for(int i=0; i <lengthJsonArr; i++)
              {                                     
                  JSONObject jsonChildNode = jsonMainNode1.getJSONObject(i);


                      String Pid      = jsonChildNode.optString("pid".toString());
                      String Name     = jsonChildNode.optString("name").toString();
                      String Refid=jsonChildNode.optString("refid".toString());
                      OutputData = Name;  

                 LinearLayout buttonContainer=(LinearLayout)findViewById(R.id.btn_container);
               Button button = new Button(buttonContainer.getContext());
               button.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
               button.setText(OutputData);
               button.setTag(Refid);
               buttonContainer.addView(button);         
               button.setOnClickListener(new OnClickListener() {
                       public void onClick(View v) {
                           LinearLayout buttonContainer = (LinearLayout)findViewById(R.id.btn_container);
                           buttonContainer.removeAllViews();
                           Toast.makeText(getApplicationContext(),
                                    "button" +v.getTag()+ "is clicked", Toast.LENGTH_SHORT).show();


                           new LongOperation().execute("http://10.0.2.2:80/android_connect/home.php?pid="+v.getTag());                        }
                  }
                   );

              }
            }
            }
           //if closing bracket                       
            catch (JSONException e) {

                  e.printStackTrace();
               }

             }

    }

    }
更新后,我也得到了错误

    01-28 05:56:33.512: W/dalvikvm(4763): threadid=1: thread exiting with uncaught exception (group=0x41465700)
01-28 05:56:33.532: E/AndroidRuntime(4763): FATAL EXCEPTION: main
01-28 05:56:33.532: E/AndroidRuntime(4763): java.lang.NullPointerException
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.example.proj2.MainActivity$LongOperation.onPostExecute(MainActivity.java:162)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.example.proj2.MainActivity$LongOperation.onPostExecute(MainActivity.java:1)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.AsyncTask.finish(AsyncTask.java:631)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.Looper.loop(Looper.java:137)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.app.ActivityThread.main(ActivityThread.java:5103)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at java.lang.reflect.Method.invokeNative(Native Method)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at java.lang.reflect.Method.invoke(Method.java:525)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at dalvik.system.NativeStart.main(Native Method)

检查Gson解析器:@williams JSONObject jsonMainNode=jsonResponse.optJSONObjectpage_菜单;String Data=jsonMainNode.getStringflag;ifData.equalsP{//…}else{}收到错误nullpointerexception。请用代码和错误更新您的问题。@GrisHnu我更新了我的question@ammu你的logcat在哪里?@Grishnu现在也加了一句
    01-28 05:56:33.512: W/dalvikvm(4763): threadid=1: thread exiting with uncaught exception (group=0x41465700)
01-28 05:56:33.532: E/AndroidRuntime(4763): FATAL EXCEPTION: main
01-28 05:56:33.532: E/AndroidRuntime(4763): java.lang.NullPointerException
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.example.proj2.MainActivity$LongOperation.onPostExecute(MainActivity.java:162)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.example.proj2.MainActivity$LongOperation.onPostExecute(MainActivity.java:1)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.AsyncTask.finish(AsyncTask.java:631)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.os.Looper.loop(Looper.java:137)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at android.app.ActivityThread.main(ActivityThread.java:5103)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at java.lang.reflect.Method.invokeNative(Native Method)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at java.lang.reflect.Method.invoke(Method.java:525)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
01-28 05:56:33.532: E/AndroidRuntime(4763):     at dalvik.system.NativeStart.main(Native Method)
   JSONObject jo = new JSONObject("page_menu");
   String flag= jo.optJSONObject("flag");
   if(flag.equalsIgnoreCase("P")) 
    {
       JSONArray resultarr = jo.getJSONArray("page");
       for (int i = 0; i < resultarr.length(); i++) 
        {
        String namevalue= resultarr.getJSONObject(i).getString("name");
        }
     }
    else if if(flag.equalsIgnoreCase("M")) 
    {
       JSONArray results = jo.getJSONArray("menu"); 
        for (int i = 0; i < results.length(); i++) 
        {
        String Idvalue= results.getJSONObject(i).getString("pid");

        }
      }