从Android中的URL解析极其简单的JSON

时间:2018-07-19 18:43:15

标签: java android json parsing

我已经尝试了所有在线方法来尝试解析此JSON,但似乎没有任何效果。这是JSON:

let val = parseFloat(formControl.value)
return !!val && val == formControl.value && val >= -90 && val <= 90 ? null : { ...

就是这样。它只是布尔值。如果很重要,它来自HTTP网站。 如何在Android Studio中的Java中解析来自http://example.com的极其简单的JSON?我正在尝试基于这些在我的应用程序中创建布尔值。我知道这个问题在这个网站上有很多,但是我确实尝试了10个解决方案,但没有任何效果。谢谢。

2 个答案:

答案 0 :(得分:1)

尝试以下代码。

try {
  JSONObject json = new JSONObject(your - json - string - here);
  boolean b1 = json.optBoolean("salonphoebe");
  boolean b2 = json.optBoolean("salonvo");
 } catch (JSONException e) {
  e.printStackTrace();
 }

答案 1 :(得分:0)

好的,我已经解决了自己的问题。这是我学到的一切以及所做的一切。如果他们遇到此问题,我想为其他任何人提供帮助。首先,我将其添加到了androidmanifest.xml:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

然后我将其添加到androidmanifest.xml中的标签之间,因为我解析JSON的链接是HTTP链接:

android:usesCleartextTraffic="true"

真正迅速将所有这些导入到您的mainactiviy.java中:

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

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

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

然后我们进入困难的阶段。从互联网解析JSON数据分为两个部分。首先,您必须从URL读取JSON(意味着将在线的JSON放入字符串中),然后必须将JSON的字符串组织成单独的变量。因此,让我们从HTTP请求开始。我在MainActivity.java(在OnCreate下)中创建了一个异步类,该类在网上找到,如下所示:

public class HttpGetRequest extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
        try {
            String url = "http://example.com/example.php";
            URL obj = new URL(url);
            HttpURLConnection con = (HttpURLConnection) obj.openConnection();
            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'GET' request to URL : " + url);
            System.out.println("Response Code : " + responseCode);
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            System.out.println("Test");
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }

            in.close();

            String jsonResponse = response.toString();
            return  jsonResponse;

        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);
        try {
            JSONObject json = new JSONObject(result);
            boolean myJsonBool = json.optBoolean("samplestringinyourjson");
            if(hasPaid){
                //do something 
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

}
}

好吧,基本上,我们将其放入Async类的原因是因为Java不允许您在OnCreate中发出HTTP请求。 doInBackground在做什么,就是获取JSON数据并将其放入字符串中,就像我说的那样。 OnPostExecute将该字符串分成布尔值并对其进行处理。最后,将其粘贴到您的OnCreate中,否则将不起作用:

new HttpGetRequest().execute();

就是这样。如果您有疑问,请问,希望我能看到。