如何在java中拆分字符串并创建json对象?

时间:2016-05-30 11:51:33

标签: java json

我尝试拆分字符串并用它创建一个json对象。但不知怎的,我无法创建json对象。 Json对象" objectBuilder"没有得到价值。请帮忙。

我的书号如:" bookNo":" 120,130,140"。这里bookNo可以更改,并附带2个或更多值。这些书号,我从数据库中获取。我无法改变Json API。它应该是javax.json api。

    for(BookTerm dataTable:list){
        URL url1 = new URL("http://books.google.com/type/");
        JsonObjectBuilder objectBuilder = Json.createObjectBuilder();
        String uriAdd = dataTable.getBookNo().toString();
        String[] uriLink = uriAdd.split(", ");
        int i = 0;
        String uriLink1 = null;
           if(uriLink != null){
               while (i< uriLink.length){
                   uriLink1 = uriLink[i];
                   URL url2 = new URL(url1.getProtocol(), url1.getHost(), url1.getPort(), url1.getPath() + uriLink1, null);
                   uriAdd1 = url2.toString();
                   i++;
                   objectBuilder.add("bookNumber", uriLink1)
                      .add("uri", uriAdd1).build();
               }
           }
    }

输出将是:

    {
         "bookNumber":"120",
         "uri":"http://books.google.com/type/120"
    },
    {
         "bookNumber":"130",
         "uri":"http://books.google.com/type/130"
    }

等等。

2 个答案:

答案 0 :(得分:0)

创建一个包含属性bookNumberuri的POJO类,并覆盖toString方法,如下所示:

public class Book{
private String bookNumber;
private String uri;

//define a constructor with parameters
public Book(String bookNumber, String uri){
this.bookNumber = bookNumber;
this.uri=uri;
}


// define getters setters
// public String getBooknumber(..) etc.


@Override
    public String toString(){
        return "obj{bookNumber:" + "\"" + this.bookNumber + "\"" +", uri:"+ "\"" +  this.uri }" ;
    }
}

在你的类中创建一个Book类的实例并创建一个JSONObject:

Book book = new Book("123214213", "http://www.sth.com");
JSONObject jsobject = new JSONObject(book.toString());

JSONArray jsonArray = new JSONArray();
jsonArray.put(jsobject);

//.....

答案 1 :(得分:0)

我之前从未使用过JsonObjectBuilder,但看起来你永远不会保存对构建器在.build()行上创建的JsonObject的引用。此外,您不断向构建器的对象添加相同的密钥,每次只需覆盖它。您想要创建一个ArrayBuilder并在其中包含多个ObjectBuilder,如下所示:

JsonBuilderFactory factory = Json.createBuilderFactory();
JsonObject value = factory.createArrayBuilder();

while(haveObjects) {
   value.add(Json.createObjectBuilder().add("bookNumber", uriLink1).add("uri", uriAdd1).build());
}
// writer will be constructed with some sort of output, and this will write the JSON value to it.
JsonWriter writer = Json.createWriter();
writer.write(value);