Android студия Java: HashMap с одной строкой и одним массивом - PullRequest
0 голосов
/ 28 ноября 2018

Я работаю над проектом, который работает с онлайн-API.Все до этого момента работает отлично.Один вызов API для добавления товаров в накладную заставляет меня биться головой в дверь.

Это массив, который мне нужно отправить:

{id = 84, new_item={price=69.99, title=new item}}

Iполучил массив элементов счета-фактуры без проблем:

    `JSONObject items = new JSONObject();
    JSONObject it = new JSONObject();
    try {
        items.put("id",id);
        it.put("title",item);
        it.put("price",price);
        items.put("new_item",it);

    } catch (JSONException e) {
        e.printStackTrace();
    }`

Это теперь дает мне:

{"id":"84","new_item":{"title":"ffffvvv","price":"6.99"}}

Но моя функция все еще ожидает хэш-карту.Я думаю, что стоило бы изменить предыдущие вызовы этой функции и ожидать ли это JsonObject?У меня не так далеко, что это займет намного больше часа.

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Решение в моём редактировании основного поста.Я пытался использовать HashMap для создания объекта параметров для отправки в API.Это работало нормально, пока мне не нужно было смешать его и поместить объект в объект, но также с некоторыми простыми строковыми значениями.Java просто не нравится.Идея HashMap была просто заменена на JsonObject.Я должен был сделать это с самого начала, но я только начинающий.Так как счета-фактуры и клиент - единственные, что я сделал.Потребовалось всего около 30 минут, чтобы заменить все существующие вызовы функций.БАМ !!Готово.Надеюсь, это кому-нибудь поможет.Когда вы действительно думаете, что нашли решение.Не бойтесь заглянуть немного дальше.Убедитесь, что это правильное решение.

0 голосов
/ 28 ноября 2018

Я думаю, что вижу вашу проблему, пожалуйста, дайте мне знать, если я неправильно понял.У вас есть объект myArray типа HashMap<String, HashMap<String, String>>.Это означает, что это карта, которая отображает строки на карты, эти карты в свою очередь отображают строки на другие строки

Естественно, ваша первая myArray.put() работает, потому что вы putобъект (value) типа HashMap<String, String> в myArray с маркировкой "new_item".На вашей карте у вас есть "new_item" -> value.

Затем вы хотите добавить новую вещь в myArray, эта вещь будет "id" -> 84."id" является строкой, поэтому это правильный тип ключа для ввода в myArray, но значение должно иметь тип HashMap<String, String>.84 - это int, даже "84" не будет работать, потому что это String, а не HashMap<String, String>

Если вы хотите, чтобы ваша карта myArray содержала оба "new_item" -> value и "id" -> 84, тогда value и 84 должны быть одного типа.Самое простое, что можно сделать, это , вероятно , изменить myArray на HashMap<String, String> и преобразовать value и 84 в String перед тем, как поместить их в myArray.Это верно, если после этого вы используете myArray как String (для отправки запроса, печати и т. Д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...