Я попытался разобрать этот адрес JSON, но не смог. Код, который я пробовал, не работает, данные не отображаются. Можешь мне помочь?
Мой код;
private void parseJSON() {
final String url = "json website";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray(null);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject hit = jsonArray.getJSONObject(i);
String imageref = hit.getString(null);
mExampleList.add(new ExampleItemRef(imageref));
}
Этот JSON;
[
"https://www.asdasd.com/images/r/a.png",
"https://www.asdasd.com/images/r/b.png",
"https://www.asdasd.com/images/r/c.png",
"https://www.asdasd.com/images/r/d.png",
"https://www.asdasd.com/images/r/e.png"
]пустой json не возвращает мой код следующим образом: JSONArray jsonArray = response.getJSONArray (null);
Я редактировал сообщение, вы видите?
Просто удалите все ненужные части из вашего кода и измените его, как показано ниже. Вам нужно поместить свою строку json при создании массива
private void parseJSON() {
final String url = "json website";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = response.getJSONArray(jsonString);
for (int i = 0; i < jsonArray.length(); i++) {
mExampleList.add(new ExampleItemRef(jsonArray.getString(i)));
}
}
"jsonString" будет вашим массивом JSON без ключей. Попробуйте это как пустую строку ""
Вы могли бы сделать так:
ArrayList < ExampleItemRef > mExampleList = new ArrayList <ExampleItemRef > ();
String jsonStr =
"[ \"https://www.asdasd.com/images/r/a.png\", \"https://www.asdasd.com/images/r/b.png\", \"https://www.asdasd.com/images/r/c.png\", \"https://www.asdasd.com/images/r/d.png\", \"https://www.asdasd.com/images/r/e.png\" ]";
try {
JSONArray jsonArray = new JSONArray(jsonStr);
for (int i = 0; i < jsonArray.length(); i++) {
String imageref = jsonArray.getString(i);
mExampleList.add(new ExampleItemRef(imageref));
}
} catch (JSONException e) {
e.printStackTrace();
}
коды говорят сами за себя, поэтому без комментариев, надеюсь, полезно
Отредактировано: попробуйте это:
private void parseJSON() {
final String url = "json website";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
JSONArray jsonArray = new JSONArray(response.toString());
for (int i = 0; i < jsonArray.length(); i++) {
String imageref = jsonArray.getString(i);
mExampleList.add(new ExampleItemRef(imageref));
}
эй, спасибо, но мой json не строка. этим способом; final String url = "ВЕБ-САЙТ JSON"; JsonObjectRequest request = new JsonObjectRequest (Request.Method.GET, url, null, new Response.Listener <JSONObject> () {@Override public void onResponse (ответ JSONObject) {попробуйте {JSONArray jsonArray = response.getJSONArray (null);
Судя по предоставленному вами коду, вы выполняете итерацию по новому созданному массиву JSON (
new JSONArray()создает пустой объект массива JSON), что означает, что он не будет содержать элементов. Вы должны получить массив, содержащий строки. Не зная источника вашего JSON (например, ответа службы, программно созданного объекта, строки JSON?), Трудно дать полный ответ. Если источником является просто строка JSON, вы можете проверить этот ответ: stackoverflow.com/questions/18977144/…