2016-05-30 58 views
-1

我想分割一個字符串並用它創建一個json對象。但不知何故,我不能創建json對象。 Json對象「objectBuilder」沒有得到該值。請幫忙。如何拆分一個字符串並在java中創建一個json對象?

我有這樣的書號:「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" 
    } 

等。

+0

'但是不知何故,我無法創建json對象'爲什麼不? – Philippe

+0

我不知道我在這裏錯過了什麼。如果我打印該值,它會打印出來,但不能用它創建Json對象。 – Shimu

+0

你會得到任何異常嗎? – asdfsarandom

回答

0

我有以前從未使用過JsonObjectBuilder,但它看起來像從未保存對構建器使用.build()在您的行中創建的JsonObject的引用。此外,您不斷將相同的密鑰添加到構建器的對象中,每次都簡單地覆蓋它。你想要創建一個ArrayBuilder並在其中包含多個ObjectBuilders,如下所示:

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); 
+0

你不能添加對象的值。沒有選擇它。 – Shimu

+0

根據文檔有... https://docs.oracle.com/javaee/7/api/javax/json/JsonArrayBuilder.html –

0

創建屬性bookNumberuri和覆蓋的toString方法的POJO類就像:

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

//..... 
相關問題