格式化输入作为JSON格式与java的问题

问题描述:

大家好,我有一个麻烦,我的Java程序。本质上,我正在编写一个程序,要求用户提供书名,作者,价格和isbn。然后它将输入存储到存储输入的Book类中,并具有一个toString方法,该方法输出类似于JSON格式的内容。 然后,我的books类使用Array列表来存储Book对象,并且有一个toString方法,它以JSON格式打印出整套书籍。问题是它没有正确格式化。问题在于我的代码中的if和else语句。我的继承人代码:格式化输入作为JSON格式与java的问题


import java.util.ArrayList; 
public class Books 
{ 
    private ArrayList<Book> books; 

    public Books() 
    { 
    books = new ArrayList<Book>(); 
    } 
    public void add(Book bk) 
    { 
    books.add(bk); 
    } 
    public String toString() 
    { 
    String temp = "{\n "; 
    temp = temp + " \"books:\": [\n"; 
    int bookCount = 0; 
    for (Book bk : books) { 
     temp += bk.toString(); 
     bookCount++;//add +1 to bookcount 
     if (bookCount < books.size()-1) { 
     temp += ",\n"; 
     } 
     else { 
     temp += "\n ]\n}\n"; 
     } 
    } 
    return temp; 
    } 
} 

当我运行我的程序,它看起来是这样的:

Results

我的目标是有它看起来像这样:

WantedResults

因此,在正确解析第一本书后,添加“,\ n”; 。但是每增加一个“\ n] \ n} \ n”后,每一本书都将被解析。我只想添加到最后一个。 :(请帮助。

在此先感谢

的问题是,你的检查条件之前增加bookCount值。

如果你没有使用增强的for循环,代码看起来像这样

for (int bookCount = 0; bookCount < books.size()-1; bookCount++) { 
    Book book = books.get(i); 
    // print book 
    // check Condition 
} 

应该bookcount后检查的条件

后加入这样不行,使用适当的JSON库来正确解析或创建JSON数据结构。

这里是一个教程,让你开始。 http://java.sg/parsing-a-json-string-into-an-object-with-gson-easily/

+0

谢谢你的头了,但对于我来说,我不得不这样分析它:\ – user1025064 2012-03-09 02:54:14

+0

作业,ehhh? :) – ingyhere 2012-03-09 02:58:23

使用Jackson

... 
ObjectMapper mapper = new ObjectMapper(); 
mapper.writeValue (new java.io.Writer().write (jsonifiedStr), books); 
System.out.println (jsonifiedStr); 
...