2016-11-18 102 views
0

我需要在新行中返回json数组的每个元素。而是在一行中打印。我尝试使用'/ n'和空格,但它不工作。用新行加入json字符串值

String json = null; 
//split cookie with delimiter to store in array 
String wl[] = wishList.split("~"); 

//JSON RETURN VALUE 
json = "[\""; 
for(int i = 0; i < wl.length; ++i) { 
    json += wl[i]; 
    //tried but didn't work 
    //json.split("\n"); 
} 
json += "\"]"; 
System.out.println(json); 

所以我试图cancatinating for循环,但它没有奏效。 我需要走出这样的

1.abc 
2.bcd 
3.efg 

,但我得到这个输出

1.abcbcdefg 
+0

您是否阅读过['String#split'](http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String))文档?只需使用'json + =“\ n”'或'json + = wl [i] +“\ n”'。你的问题的标题也让我相信你认为'json'是一个数组,它不是,它是'String'。 –

+1

手动构建JSON是一种反模式。使用像杰克逊或Gson的图书馆 –

回答

1

我使用“/ n”和空间的尝试,但它不工作。

您应该使用"\n"在你的JSON字符串添加新行,而不是"/n",这是不一样的东西。你应该为正则表达式做同样的事情。

3.行分隔符为 '\ n'

这意味着 '\ r \ n' 是还支持,因为尾部的空白被忽略>解析JSON值时。

该文件中的最后一个字符可能是一个行分隔符,并且它将被视为与没有行分隔符存在一样。

来源:http://jsonlines.org/

编辑

JSON数组已逗号阵列和串的单独的值应引号或双引号之间。但在开始和结束时不需要“\”。
你可以得到这个字符串:

["abc", 
"bcd", 
"efg"] 

与此代码:

final String STRING_DOUBLE_QUOTE="\""; 
String json = null; 
// split cookie with delimiter to store in array 
String wl[] = wishList.split("~"); 

// JSON RETURN VALUE 
json = "["; 
for (int i = 0; i < wl.length; ++i) { 
    if (!json.equals("[")) { 
     json += ",\n"; 
    } 
    json += STRING_DOUBLE_QUOTE + wl[i] + STRING_DOUBLE_QUOTE; 
} 
json += "]"; 

System.out.println(json); 
+0

我会指出这是一个错字,在注释的代码中,他使用了正确的'\ n'。但我不明白为什么要使用'\\ n'而不是'\ n'。 – AxelH

+0

没理由。我的错误:)谢谢 – davidxxx

0

如果你希望它是在多行,你得将它保存在多个元素,即一个数组。

试试这个:

String wl[] = wishList.split("~"); 

for(int i = 0; i < wl.length; ++i){ 
    System.out.println(wl[i]); 
} 

不能确定这是否是你问什么,但是这是回答你的书面质询

1

什么你正在尝试做的(如果我得到它的权利)是在~上分割一个字符串,并用它创建一个JSON数组(一个单独的行)。

您是否想过简单地替换角色?

String json = "[" + wishlist.replace("~", ",\n") + "]"; //Added a , to separated each elements 

但是,如果你想自己做,

String json = "["; 
for(int i = 0; i < wl.length; ++i) { 
    json += wl[i] + ",\n"; 
} 
json += "]"; 

您需要添加换行符,而不是再次分裂它。

当然,正如所指出的,这应该使用库设计来完成,但这里是对代码的简单更正。

PS:我没有写出所需的\"可重写性。但是这两个解决方案都可以轻松添加。