我已经尝试了所有在线方法来尝试解析此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个解决方案,但没有任何效果。谢谢。
答案 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();
就是这样。如果您有疑问,请问,希望我能看到。