Имеется код от https://restcountries.eu/rest/v2/all
Чтобы было понятно, вот JSON
к каждой стране:
[
{
"name": "Afghanistan",
"topLevelDomain": [".af"],
"alpha2Code": "AF",
"alpha3Code": "AFG",
"callingCodes": ["93"],
"capital": "Kabul",
"altSpellings": ["AF", "Afġānistān"],
"region": "Asia",
"subregion": "Southern Asia",
"population": 27657145,
"latlng": [33.0, 65.0],
"demonym": "Afghan",
"area": 652230.0,
"gini": 27.8,
"timezones": ["UTC+04:30"],
"borders": ["IRN", "PAK", "TKM", "UZB", "TJK", "CHN"],
"nativeName": "افغانستان",
"numericCode": "004",
"currencies": [{
"code": "AFN",
"name": "Afghan afghani",
"symbol": "؋"
}],
"languages": [{
"iso639_1": "ps",
"iso639_2": "pus",
"name": "Pashto",
"nativeName": "پښتو"
}, {
"iso639_1": "uz",
"iso639_2": "uzb",
"name": "Uzbek",
"nativeName": "Oʻzbek"
}, {
"iso639_1": "tk",
"iso639_2": "tuk",
"name": "Turkmen",
"nativeName": "Türkmen"
}],
"translations": {
"de": "Afghanistan",
"es": "Afganistán",
"fr": "Afghanistan",
"ja": "アフガニスタン",
"it": "Afghanistan",
"br": "Afeganistão",
"pt": "Afeganistão"
},
"flag": "https://restcountries.eu/data/afg.svg",
"regionalBlocs": [{
"acronym": "SAARC"
Беда в том, что отсутствует JsonArray.
Мой полный код:
public class MainActivity extends AppCompatActivity {
public MainActivity() throws MalformedURLException {
}
private TextView tvData;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnHit = (Button) findViewById(R.id.btnHit);
tvData = (TextView)findViewById(R.id.tvJsonItem);
btnHit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new JSONTask().execute("https://restcountries.eu/rest/v2/all");
}
});}
public class JSONTask extends AsyncTask<String,String, String >{
@Override
protected String doInBackground(String... params) {
HttpsURLConnection connection = null;
BufferedReader reader = null;
try {
URL url = new URL(params[0]);
connection = (HttpsURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
//вот тут начинается проблема:
String finalJson = buffer.toString();
JSONObject parentObject = new JSONObject(finalJson);
JSONArray parentArray = parentObject.getJSONArray("languages");
JSONObject finalObject = new JSONObject();
String info1 = finalObject.getString("iso639_1");
String info2 = finalObject.getString("iso639_2");
String info3 = finalObject.getString("name");
String info4 = finalObject.getString("nativeName");
//даже если прописать languages как array, то по итогу приложение ничего не отображает.
return info1 + " " + info2 + " " + info3 + " " + info4;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
} finally {
if (connection != null) connection.disconnect();
try {
if (reader != null) reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
};
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
tvData.setText(result);
}
}
}
Каким образом его запарсить правильно?
Виртуальный выделенный сервер (VDS) становится отличным выбором
Данные методы возвращают на клиент ответ с Content-type json , но мне нужен HAL или HAL + JSON
Как оптимальнее проверить при сохранении - есть ли уже объект в базе данных? Подойдет ли код:
Начал изучать Java и наткнулся на то, что не могу редактировать некоторые классы в Android StudioПытаюсь расковырять некоторые проекты с гитхаба