Как мне проанализировать входной JSON и на основе существующего JSON, который представляет товарный инвентарь, сгенерировать счет - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь выполнить синтаксический анализ JSON с помощью библиотеки GSON.
У меня есть опись продукта в форме JSON, например:

[
 {
   "id": 2000,
   "name": "Child Shoes",
   "variants": [
     {
       "size": "size 7",
       "price": 19.99,
       "tax_code": 0
     }
   ]
 },
 {
   "id": 3000,
   "name": "Eggs",
   "variants": [
     {
       "size": "6",
       "price": 1.50,
       "tax_code": 7
     },
     {
       "size": "12",
       "price": 2.25,
       "tax_code": 1
     }
   ]
 },
 {
   "id": 3100,
   "name": "Apples",
   "variants": [
     {
       "size": "1",
   "price": 0.30,
   "tax_code": 7
 },
 {
   "size": "10",
   "price": 2.50,
   "tax_code": 7
 }
 ]
 },
 {
   "id": 5423,
   "name": "Book",
   "variants": [
     {
       "size": "Assorted",
       "price": 11.00,
       "tax_code": 1
     }
   ]
 }
]

И налоговые коды:

[
 {
   "code": 0,
   "name": "HST",
   "rate": 0.13
 },
 {
   "code": 1,
   "name": "HST - Books",
   "rate": 0.05
 },
 {
   "code": 7,
   "name": "EXEMPT - Food",
   "rate": 0
 }
]

Теперь, как мне сгенерировать общий счет, если я получу ввод, подобный этому:

[
 {
   "product": 3000,
   "variant": 1,
   "quantity": 1
 },
 {
   "product": 3100,
   "variant": 1,
   "quantity": 1
 }
]

Я новичок в JSON и испытываю трудности с поиском правильной стратегии для решения этой проблемы.проблема.

1 Ответ

0 голосов
/ 16 мая 2018

Я надеюсь, что приведенное ниже решение даст вам некоторое представление -

Сопоставьте свой json с pojo, как показано ниже -

 public class ProductInventory {

        private Integer id;
        private String name;
        private List<Variant> variants = null;

        public Integer getId() {
        return id;
        }

        public void setId(Integer id) {
        this.id = id;
        }

        public String getName() {
        return name;
        }

        public void setName(String name) {
        this.name = name;
        }

        public List<Variant> getVariants() {
        return variants;
        }

        public void setVariants(List<Variant> variants) {
        this.variants = variants;
        }
        }

    //class Variant
        public class Variant {

        private String size;
        private Double price;
        private Integer taxCode;

        public String getSize() {
        return size;
        }

        public void setSize(String size) {
        this.size = size;
        }

        public Double getPrice() {
        return price;
        }

        public void setPrice(Double price) {
        this.price = price;
        }

        public Integer getTaxCode() {
        return taxCode;
        }

        public void setTaxCode(Integer taxCode) {
        this.taxCode = taxCode;
        }           
        }

Используйте библиотеку Gson для анализа json в объект java и наоборот:

Gson gson = new Gson();
Type jsonType = new TypeToken<List<ProductInventory>>(){}.getType();
List<ProductInventory> piList = gson.fromJson(json, jsonType);

Теперь выполните итерацию над piList, заполните другие ваши pojos и проанализируйте их в json, используя метод toJson().

Примечание : - Вы должны создатьклассы pojo для целевого json, который вы можете создать здесь - http://www.jsonschema2pojo.org/

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