2016-05-30 8 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を作成し、その中に複数の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); 
+0

オブジェクトを値で追加することはできません。それのためのオプションはありません。 – Shimu

+0

ドキュメントによれば... https://docs.oracle.com/javaee/7/api/javax/json/JsonArrayBuilder.html –

0

属性bookNumberuriでPOJOクラスを作成し、同じようにtoStringメソッドをオーバーライドします:Bookクラスのインスタンスを作成し、JSONObjectを作成し、あなたのクラスでは

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 book = new Book("123214213", "http://www.sth.com"); 
JSONObject jsobject = new JSONObject(book.toString()); 

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

//..... 
関連する問題