Как мне поместить 2 или более значений в JSONArray, который находится внутри JSONObject в Spring Boot? - PullRequest
1 голос
/ 27 мая 2020

Я хотел поместить массив значений внутри JSONObject, и он должен выглядеть так, когда я сохраню его в базе данных:

{
"specName":"Material",
"specValue":"Fabric",
"specName":"Height",
"specValue":
   [' 
     '{
       "m",  
       "cm", 
       "mm"
      },  
   '] 
}';

Дело в том, что пользователь должен указать атрибут, скажем, например «Высота» и его допустимые типы / единицы измерения, например, «метр, сантиметр и миллиметр» . Мой текущий код ниже:

JSONArray itemTypeArray = new JSONArray();
itemTypeArray.put(specValue);

JSONObject itemTypeObj = new JSONObject();
itemTypeObj.put("specName", specName);
itemTypeObj.put("specValue", itemTypeArray);

itemType.setItemSpecs(itemTypeObj);

Но когда это сохраняется в базе данных, это не так, как я ожидал, и мне трудно искать ответы, и мое последнее средство - задать его здесь. Текущее значение, которое сохраняется в базе данных, выглядит следующим образом:

{"specName":"Material,Height","specValue":["Fabric, m, cm, mm"]}    

Все складывается в одно поле.

Мой HTML код:

 <div>
    <label>Type: </label>
    <input type="text" th:field="*{typeName}" />
 </div>
 <div>
     <div class="specFields-wrapper">

     </div>

     <button type="button" class="c-button submit" onclick="addSpec();">Add Specification</button>
</div>
<script text="text/javascript">
    function addSpec() {
        let specFieldLabel = '<span>Label: <input type="text" name="specName"></span>\r\n';
        let specFieldValue = '<span>Value: <input type="text" name="specValue"></span>\r\n';

        document.querySelector('.specFields-wrapper').innerHTML += (specFieldLabel+specFieldValue)+'<br>';
    }
</script>

Любая помощь приветствуется. Заранее спасибо! :)

1 Ответ

1 голос
/ 27 мая 2020

Посмотрите этот пример

public static void main(String[] args) throws Exception {
      JSONObject json1 = new JSONObject();
      json1.put("specName", "Material");
      json1.put("specValue", "Fabric");

      JSONObject json2 = new JSONObject();
      json2.put("specName", "Height");
      json2.put("specValue", new JSONArray(Arrays.asList("m","cm","mm")));

      JSONArray array  = new JSONArray();
      array.put(json1.toMap());
      array.put(json2.toMap());

      String jsonFormatted = array.toString(2);
      System.out.println(jsonFormatted);
   }
...