字符串数组的问题

时间:2015-05-21 12:28:16

标签: java arrays json

以下代码将结果作为测试结果:[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时,我正在获得第一个字符&#39; [&#39;单独。我想要获得数组的第一项(someproduct)。

请帮我解决。

6 个答案:

答案 0 :(得分:2)

问题是你使用的方法还不够。 一种方法是使用其他类型的数组(例如ArrayList),然后Override使用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"]

注:

有许多方法可以重复使用此代码,例如

  1. 创建ArrayListWithNicePrint extends
  2. 的新课程ArrayList
  3. 创建一个static method,返回一个带有精美打印的新ArrayList(我真的更喜欢这个)
  4. 编辑:(基于评论):

    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);
       }
    }
    

答案 1 :(得分:1)

试试这个:

String[] Id = new String[5];

for(int i = 0; i < 5; i++) 
 {

   Id[i] =" **\"someproduct\"** ";

 }

希望它能运作

答案 2 :(得分:1)

您可以使用一些JSON转换器库,或者作为quickfix,您可以使用以下内容:

String[] Id = new String[5];
for (int i = 0; i < 5; i++) {
    Id[i] ="\"someproduct\"";
}
String arrOutput = Arrays.toString(Id).replaceAll("\\[", "{").replaceAll("\\]", "}");
System.out.println("test:"+ arrOutput);
writer.key("product").value(arrOutput);

根据数组元素的内容,需要更多的解决方法。也许如果您写了更多信息,我们可以帮助您更好。

答案 3 :(得分:1)

为什么不尝试将它放入List中然后使用Gson将整个列表转换为json格式,挖掘一下以获得正确的json格式。对于检索,您可以使用与每个元素关联的标记名称轻松检索。你需要的不是很清楚所以这是我能做的最好的猜测

答案 4 :(得分:1)

尝试使用此代码。它会解决你的问题。

    String[] Id = new String[5];
        for (int i = 0; i < 5; i++) {
            Id[i] ="\"someproduct\"";
        }
        System.out.println("test:"+Arrays.toString(Id).replace('[', '{').replace(']', '}'));

答案 5 :(得分:0)

当使用JSONWriter对象时,您应该使用内置的array()和endArray()方法,如下所示:

writer.key("product").array();
for (int i=0; i<5; i++) {
  writer.object();
  writer.key("name").value("someproductname" + i);
  writer.endObject();
}
writer.endArray();

http://www.json.org/javadoc/org/json/JSONWriter.html