2017-02-23 130 views
-1

Я хочу сохранить String в JsonArray. Ex: "virtual_hosts": [ "vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com"]Поместить значение String в JsonArray

Как я должен это сделать, с помощью Java.

JsonArray arr = new JsonArray(); 
arr.add() 

включает в себя добавление JsonElement, а не строки. Я хочу сохранить строку.

+1

вы можете проверить http://stackoverflow.com/questions/15729598/how-to-add-a-string-array-in-a-json-object и http://stackoverflow.com/questions/11053332/ how-to-add-string-in-jsonarray –

+1

* «Как мне это сделать» * Используйте библиотеку JSON. Искать в Интернете. Для Java доступно несколько библиотек. Если вы спрашиваете, как использовать определенную библиотеку, вам нужно сказать, какой из них вы пытаетесь использовать. – Andreas

+0

Вы можете создать список хостов и установить свойство в JSON, пожалуйста, проверьте ответ ниже. –

ответ

0

Если вы собираетесь использовать gson от Google, похоже, вы должны сделать это таким образом:

JsonPrimitive firstHost = new JsonPrimitive("vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com"); 

JsonArray jArray = new JsonArray(); 
jArray.add(firstHost); 

JsonObject jObj = new JsonObject(); 
jObj.add("virtual_hosts", jArray); 

Первая строка преобразует вашу строку java в строку json.

В следующих двух шагах создается массив json, и ваша строка добавляется к нему.

После этого создается объект json, который будет удерживать массив, и массив добавляется ключом, который делает массив доступным.

Если вы проверяете объект, он выглядит так, как будто вы хотите его получить.

Нет простого способа добавить только строку к JsonArray, если вы хотите использовать gson. Если вам нужно добавить строку напрямую, вам, вероятно, придется использовать другую библиотеку.

+0

Да, я использую JsonArray из Google. Но нет класса JsonPrimitive. Каков другой способ преобразования строки java в строку Json –

+0

@YashaJadwani на самом деле есть один, я проверил код на своем ПК. Здесь вы можете увидеть gson api [JsonPrimitive] (https://static.javadoc.io/com.google.code.gson/gson/2.6.2/com/google/gson/JsonPrimitive.html). Может быть, вы используете более старую версию Java и/или gson? –

+0

спасибо этой помощи много !! его работа как ожидалось. –

0

Вы можете создать список хостов и установить свойство в JSON.

import org.json.simple.JSONObject;  
import java.util.ArrayList; 

public class Test { 

    public static void main(String[] args) { 
     ArrayList<String> hosts = new ArrayList<String>(); 
     hosts.add("vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com"); 
     hosts.add("dummy.oc9qadev.com"); 

     JSONObject jsonObj = new JSONObject(); 
     jsonObj.put("virtual_hosts", hosts); 

     System.out.println("Final JSON String is--"+jsonObj.toString()); 


    } 
} 

Выход -

{ "virtual_hosts": [ "vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com", "dummy.oc9qadev.com"]}

0

Что вы пытаетесь сделать, это хранить JSONArray в JSONObject. Поскольку ключ virtual_hosts будет содержать значение как JSONArray.

Ниже приведен код, который может вам помочь.

public static void main(String[] args) { 

    JSONArray jsonArray = new JSONArray(); 

    jsonArray.add("vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com"); 

    JSONObject jsonObject = new JSONObject(); 

    jsonObject.put("virtual_hosts", jsonArray); 


    System.out.println(jsonObject); 

} 

Выход:

{"virtual_hosts":["vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com"]} 

Maven dependecny

<dependency> 
    <groupId>net.sf.json-lib</groupId> 
    <artifactId>json-lib</artifactId> 
    <version>2.4</version> 
    <classifier>jdk15</classifier> 
</dependency>