Как разобрать массив json с нулевым именем (только строки)

Я попытался разобрать этот адрес 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 (new JSONArray() создает пустой объект массива JSON), что означает, что он не будет содержать элементов. Вы должны получить массив, содержащий строки. Не зная источника вашего JSON (например, ответа службы, программно созданного объекта, строки JSON?), Трудно дать полный ответ. Если источником является просто строка JSON, вы можете проверить этот ответ: stackoverflow.com/questions/18977144/…

VIN 18.11.2018 04:08

пустой json не возвращает мой код следующим образом: JSONArray jsonArray = response.getJSONArray (null);

user10669131 18.11.2018 04:41

Я редактировал сообщение, вы видите?

user10669131 18.11.2018 04:45
0
3
45
2

Ответы 2

Просто удалите все ненужные части из вашего кода и измените его, как показано ниже. Вам нужно поместить свою строку 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 без ключей. Попробуйте это как пустую строку ""

PushpikaWan 18.11.2018 05:02

Вы могли бы сделать так:

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);

user10669131 18.11.2018 04:42

Другие вопросы по теме