【问题标题】:Put String value in gson.JsonArray [duplicate]将字符串值放入 gson.JsonArray [重复]
【发布时间】:2017-02-23 09:00:15
【问题描述】:

我想将String 存储在JsonArray 中。 例如:

"virtual_hosts": [ "some_host"]

在java的帮助下我该怎么做。

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

这只能让我添加一个JsonObject,但我想存储一个String

【问题讨论】:

  • “我该怎么做” 使用 JSON 库。搜索网页。有多个可用于 Java 的库。如果您要询问如何使用特定库,则需要说出您要尝试使用的库。
  • 您可以创建主机列表并在JSON中设置属性,请查看下面的答案。
  • 你应该提到你想使用 gson。可能重复的建议链接正在使用另一个库。

标签: java json


【解决方案1】:

如果你打算通过 google 使用 gson,看起来你必须这样做:

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 对象,并为数组添加一个使数组可访问的键。

如果您检查该对象,它看起来与您想要的完全一样。

如果您想使用 gson,没有简单的方法可以只向JsonArray 添加一个字符串。如果你需要直接添加你的字符串,你可能必须使用另一个库。

【讨论】:

  • 是的,我正在使用来自谷歌的 JsonArray。但是没有名为 JsonPrimitive 的类。将java字符串转换为Json字符串的另一种方法是什么
  • @YashaJadwani 实际上有一个,我在我的电脑上测试了代码。这里可以看到JsonPrimitive的gson api。也许您使用的是旧版本的 Java 和/或 gson?
  • 非常感谢这个帮助!!它按预期工作。
【解决方案2】:

您可以创建主机列表并在 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());


    }
}

输出 -

{ “虚拟主机”: [“vlbr-vlbre9ef7a820b3f43c7bd3418bb62.uscom-central-1.c9dev1.oc9qadev.com”, “dummy.oc9qadev.com”] }

【讨论】:

    【解决方案3】:

    您要做的是将 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 依赖

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

    【讨论】:

    • 他们似乎在使用谷歌的 Gson 库。
    猜你喜欢
    • 2019-04-05
    • 2012-10-07
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多