Добрый день помогите разобраться с запросами. Есть два JSON
Первый содержит остатки товара и ключ к складу
{
"odata.metadata": "http://server/ocean_shop/odata/standard.odata/$metadata#Collection(StandardODATA.AccumulationRegister_ТоварыНаСкладах_Balance)",
"value": [
{
"Склад_Key": "011cc419-a348-11e7-a211-3085a93c0618",
"Номенклатура_Key": "bb112bd5-e7b4-11e7-a2a9-3085a93c0618",
"ХарактеристикаНоменклатуры_Key": "00000000-0000-0000-0000-000000000000",
"СерияНоменклатуры_Key": "00000000-0000-0000-0000-000000000000",
"Качество_Key": "d05404a0-6bce-449b-a798-41ebe5e5b977",
"КоличествоBalance": 2
},
{
"Склад_Key": "7dddeeb8-c611-11e7-a22b-3085a93c0618",
"Номенклатура_Key": "bb112bd5-e7b4-11e7-a2a9-3085a93c0618",
"ХарактеристикаНоменклатуры_Key": "00000000-0000-0000-0000-000000000000",
"СерияНоменклатуры_Key": "00000000-0000-0000-0000-000000000000",
"Качество_Key": "d05404a0-6bce-449b-a798-41ebe5e5b977",
"КоличествоBalance": 3
}
]
}
Второй содержит наименования этих складов и ключ к ним
{
"value": [{
"Ref_Key": "011cc419-a348-11e7-a211-3085a93c0618",
"DataVersion": "AAAAAAADHyc=",
"DeletionMark": false,
"Predefined": false,
"Parent_Key": "7dddeec0-c611-11e7-a22b-3085a93c0618",
"IsFolder": false,
"Code": "000000001",
"Description": "ТЦ Бачурин",
"Комментарий": "",
"ТипЦенРозничнойТорговли_Key": "f17b4890-a591-11e7-a216-3085a93c0618",
"Подразделение_Key": "99c2e4c6-a655-11e7-a216-3085a93c0618",
"ВидСклада": "Оптовый",
"НомерСекции": 0,
"РасчетРозничныхЦенПоТорговойНаценке": false
},{
"Ref_Key": "7dddeeb8-c611-11e7-a22b-3085a93c0618",
"DataVersion": "AAAAAAADHys=",
"DeletionMark": false,
"Predefined": false,
"Parent_Key": "7dddeebf-c611-11e7-a22b-3085a93c0618",
"IsFolder": false,
"Code": "000000003",
"Description": "На Льва Толстого",
"Комментарий": "Первоймай качай ! А Хабаровск ввсех рввет))",
"ТипЦенРозничнойТорговли_Key": "f17b4890-a591-11e7-a216-3085a93c0618",
"Подразделение_Key": "7dddeeb6-c611-11e7-a22b-3085a93c0618",
"ВидСклада": "Оптовый",
"НомерСекции": 0,
"РасчетРозничныхЦенПоТорговойНаценке": false
}]
}
Как можно реализовать запрос который бы выдавал бы значения типа
ТЦ Бачурин 2
На Льва толстого 3
Я пытаюсь сначала получить значение реально ли этот товар существует на складе и передаю их адаптеру а как привязать наименования склада у меня не хватает фантазии. По сути нужно формировать второй запрос который бы доставал мне наименования склада по ключу но как это реализовать более правильно и без нагромождения кода я не знаю. Я только начал изучать разработку приложений под Android поэтому прошу не судить строго))
private void getNomenclatureAllProducts(final NomenclatureActivity inflater, String guid){
// inflater контекст
// guid интересующий меня товар
ServisAPI api = RetrofitClient.getApiService();
Call<AccumulationRegisterGoodsOnWarehouses> accumulationRegisterGoodsOnWarehousesCall = api.getAllProducts(guid);
accumulationRegisterGoodsOnWarehousesCall.enqueue(new Callback<AccumulationRegisterGoodsOnWarehouses>() {
@Override
public void onResponse(Call<AccumulationRegisterGoodsOnWarehouses> call, Response<AccumulationRegisterGoodsOnWarehouses> response) {
valueList = response.body().getValue();
adapter = new CatalogNomenclatureAmountAdapter(inflater, valueList);
listView.setAdapter(adapter);
}
@Override
public void onFailure(Call<AccumulationRegisterGoodsOnWarehouses> call, Throwable t) {
}
});
}
Для реализации взял только необходимые данные.
Суть:
Преобразовываете свои JSON в объекты, в своем случае подвел Ваши данные под массив.
В Вашем случаем нужно под объект с полем value типа или массив или List.
В итоге получаете два списка: Остатки и Склады.
А вот далее от твого что вам нужно.
Я в примере преобразовал данные в карты и вывел данные из складов на основе данных из остатков.
Вы же можете перебрать и просто инкапсулировать объект Storage в класс Rest, если Вам необходима дальнейшая связь данных объектов в приложении.
Или же вообще можете сделать объект с поляим id, Rest, Storage и наполнить его данными, тогда будет один объект.
Пример кода по получению объектов ниже. Использовал JSON.
Важно! Пример тестовый, так чо не стоит на него смотреть как best practice.
import com.google.gson.Gson;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class JsonTest {
public static void main(String[] args) {
Gson gson = new Gson();
Rest[] rests = gson.fromJson(FirstJson.json, Rest[].class);
Storage[] storages = gson.fromJson(SecondJson.json, Storage[].class);
Stream.of(rests).forEach(r -> System.out.println(r.getId() + " : " + r.getCountRest()));
Stream.of(storages).forEach(s -> System.out.println(s.getId() + " : " + s.getDescription()));
Map<String, Rest> restMap = Stream.of(rests).collect(Collectors.toMap(r -> r.getId(), r -> r));
Map<String, Storage> storageMap = Stream.of(storages).collect(Collectors.toMap(r -> r.getId(), r -> r));
System.out.println("========================");
restMap.forEach((s, r) -> {
System.out.println("id: " + s);
System.out.println("\tdescription: " + storageMap.get(s).getDescription());
System.out.println("\tcount: " + restMap.get(s).getCountRest());
});
}
}
class FirstJson {
public static String json =
"[{\"Склад_Key\":\"011cc419-a348-11e7-a211-3085a93c0618\",\"КоличествоBalance\":2},{\"Склад_Key\":\"7dddeeb8-c611-11e7-a22b-3085a93c0618\",\"КоличествоBalance\":3}]";
}
class SecondJson {
public static String json =
"[{\"Ref_Key\":\"011cc419-a348-11e7-a211-3085a93c0618\",\"Description\":\"ТЦ Бачурин\"},{\"Ref_Key\":\"7dddeeb8-c611-11e7-a22b-3085a93c0618\",\"Description\":\"На Льва Толстого\"}]";
}
import com.google.gson.annotations.SerializedName;
public class Rest {
@SerializedName("Склад_Key")
private String id;
@SerializedName("КоличествоBalance")
private int countRest;
public Rest() {
}
public Rest(String id, int countRest) {
this.id = id;
this.countRest = countRest;
}
public String getId() {
return id;
}
public int getCountRest() {
return countRest;
}
}
import com.google.gson.annotations.SerializedName;
public class Storage {
@SerializedName("Ref_Key")
private String id;
@SerializedName("Description")
private String Description;
public String getId() {
return id;
}
public String getDescription() {
return Description;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
С рекурсией решается быстрее, если искать до 21 числа, а вот все что больше уже намного быстрее решается простым сложениемПочему с рекурсией...
ЗдравствуйтеУ меня есть одна задача и я пока не знаю как ее решить
https://githubcom/Alexandr056/WebChatStorage Создал проект веб приложения, описал зависимости, создал контроллер, html страничку
Вы проходите по картам в порядке следования записей в них, а нужно следовать по порядку слов в предложенииМожно сделать, например, так: