以下代码给出测试结果:[someproduct, someproduct, someproduct, someproduct, someproduct]
。我期望结果为 ["someproduct", "someproduct", "someproduct", "someproduct", "someproduct"]
以便我将字符串数组推送到 json 响应中
String[] Id = new String[5];
for (int i = 0; i < 5; i++) {
Id[i] ="someproduct";
}
System.out.println("test:"+Arrays.toString(Id));
writer.key("product").value(Arrays.toString(Id));
当我尝试访问像 response.product[0]
这样的 jsonresponse 时,我只得到第一个字符“[”。我想获取数组的第一项(某个产品)。
请帮我解决。
最佳答案
问题是您使用的方法不充分。 一种方法是使用另一种类型的数组(例如 ArrayList),然后覆盖其 toString 方法。
这是一个例子:
public static void main(String... args) throws Exception{
ArrayList<String> array=new ArrayList<String>(){
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append("[");
boolean isFirst=true;
for(String s : this){
if(!isFirst){
sb.append(",");
}
isFirst=false;
sb.append("\""+s+"\"");
}
sb.append("]");
return sb.toString();
}
};
for (int i = 0; i < 5; i++) {
array.add("someproduct");
}
System.out.println(array);
}
输出:
["someproduct","someproduct","someproduct","someproduct","someproduct"]
注意:
有很多方法可以使该代码可重用,例如
- 创建一个
扩展
的新类ArrayListWithNicePrint
ArrayList
- 创建一个
静态方法
,它返回一个带有 pretty-print 的新ArrayList
(我真的更喜欢这个)
编辑:(基于评论):
public class ArrayListWithNicePrint<E> extends ArrayList{
@Override
public String toString(){
StringBuilder sb = new StringBuilder();
sb.append("[");
boolean isFirst=true;
for(Object s : this){
if(!isFirst){
sb.append(",");
}
isFirst=false;
sb.append("\""+s.toString()+"\"");
}
sb.append("]");
return sb.toString();
}
}
测试:
public class Testing{
public static void main(String... args){
ArrayListWithNicePrint<String> list= new ArrayListWithNicePrint<String>();
list.add("hi");
list.add("hello");
System.out.println(list);
}
}
关于java - 字符串数组的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30373804/