【问题标题】:How do I convert String array into Json Array如何将字符串数组转换为 Json 数组
【发布时间】:2016-02-07 07:00:24
【问题描述】:

我有一个字符串数组,例如 string[] 句子,它由每个索引中的句子组成,例如 sentences[0] 中的 This is the first messagesentences[1] 中的 This is the second message 等等。我将信息发送到服务器进行情感分析的 java 代码是这样的:

OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream());  
        out.write(
                "[ " +
                "\"Can't wait for the movie\"," +
                "\"Countdown! Only ten days remaining!\" " +
                "]");
        out.flush();
        out.close();

如何用字符串数组替换上面代码中的文本,因为它的长度是 n?

【问题讨论】:

  • 如何将字符串数组添加到以下 JSON 中?,JSON 在哪里?这个问题与 JSON 无关。
  • 知道了,抱歉。无论如何,如何将这个字符串数组转换为 JSON 数组?

标签: java arrays


【解决方案1】:

使用Gson库,将Java对象转换为Json String

    String[] sentences=new String[3];
    sentences[0]="Hi";
    sentences[1]="Hello";
    sentences[2]="How r u?";

    Gson gson=new GsonBuilder().create();
    String jsonArray=gson.toJson(sentences);

    //["Hi","Hello","How r u?"]

    out.write(jsonArray);
    out.flush();
    out.close();

【讨论】:

  • 嘿,我试过了,但是我得到了 200: bad JSON format error 作为响应。我试过这个,但我不确定它是否正确。它以中立的态度回应所有人。 OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); out.write( "[ " + "\"+tweets[0]+\"," + "\"+tweets[1]+\" " + "]"); out.flush(); out.close(); 可能是什么问题?
【解决方案2】:

最简单的解决方案是循环:

StringBuilder sb = new StringBuilder("[");
for(int i = 0; i < array.length; i++) {
    sb.append(array[i]);
    if(i < array.length-1) {
        sb.append(",");
    }
}
out.write(sb.append("]").toString());

但这存在产生潜在无效 JSON(未转义)的问题。因此:

然而,最好的解决方案是使用适当的 JSON/Java 绑定库,例如 Jackson、Gson 等。

【讨论】:

  • 嘿,我试过了,但是我得到了 200: bad JSON format error 作为响应。我试过这个,但我不确定它是否正确。它以中立的态度回应所有人。 OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream()); out.write( "[ " + "\"+tweets[0]+\"," + "\"+tweets[1]+\" " + "]"); out.flush(); out.close(); 可能是什么问题?
  • 正如我所指出的,这会产生无效的 json。这就是为什么我们强烈建议您使用 Jackson 或 Gson。
  • StringBuilder sb=new StringBuilder(); sb.append("[ \""); for(int x=0;x&lt;val;x++) { String a=xyz[x].replaceAll("[^A-Za-z0-9]"," "); sb.append("+"); sb.append(a); if(x &lt; val-1) { sb.append("+\",\""); } } sb.append("+\" ]"); System.out.println(sb.toString()); out.write(sb.toString()); 这对我来说非常有效。非常感谢!
猜你喜欢
  • 2017-08-13
  • 1970-01-01
  • 1970-01-01
  • 2017-07-20
  • 2015-04-05
  • 2011-11-22
  • 2022-01-27
相关资源
最近更新 更多