1

Java を使用してこのリンクからjson を解析するにはどうすればよいですか (スタンドアロンの Java アプリケーションの場合)。gson & Jackson ライブラリを試しましたが、この json のフォーマットが異なっているように見えるため、問題があるようです。

どのようにしますか?

facebook の人気を考えると、これを行うことができるいくつかの jar/lib を見つけたいと思っていました。例を含む推奨事項は大歓迎です。どうもありがとう。

Response.java

public class Response{
private List<Comments> commentslist;

public List<Comments> getCommentsList() {
    return commentslist;
}

public void setCommentsList(List<Comments> commentslist) {
    this.commentslist = commentslist;
}
}

コメント.java

public class Comments{
private Number count;
private List<Data> data;

public Number getCount(){
    return this.count;
}
public void setCount(Number count){
    this.count = count;
}
public List<Data> getData(){
    return this.data;
}
public void setData(List<Data> data){
    this.data = data;
}
}

From.java

public class From{
    private Number id;
private String name;

public Number getId(){
    return this.id;
}
public void setId(Number id){
    this.id = id;
}
public String getName(){
    return this.name;
}
public void setName(String name){
    this.name = name;
}
}

データ.java

public class Data{
private Number created_time;
private From from;
private Number id;
private String message;

public Number getCreated_time(){
    return this.created_time;
}
public void setCreated_time(Number created_time){
    this.created_time = created_time;
}
public From getFrom(){
    return this.from;
}
public void setFrom(From from){
    this.from = from;
}
public Number getId(){
    return this.id;
}
public void setId(Number id){
    this.id = id;
}
public String getMessage(){
    return this.message;
}
public void setMessage(String message){
    this.message = message;
}
}

gson を使用した変換試行の失敗

Response response = gson.fromJson(contents, Response.class); //contents is json string
System.out.println(response.getCommentsList()); // comes back as null

json が正常な場合、Java モデルに何か問題がありますか?

4

2 に答える 2

1

コメント (コメント) のリスト (commentList) を使用して、JSON 応答 (オブジェクトの配列) をオブジェクト (応答) に逆シリアル化しようとしています。タイプ/構造の不一致があり、GSON はそれを逆シリアル化できません。

次のようなことを試してください:

Gson gson = new Gson();
Type collectionType = new TypeToken<List<Response>>(){}.getType();
List<Comments> commentList = gson.fromJson(yourJsonString, collectionType);

Response オブジェクトを次のように変更します。

public class Response{
  private Comments comments;

  public Comments getComments() {
      return comments;
  }

  public void setComments( Comments comments) {
      this.comments= comments;
  }
}

fb の json は、コメントと呼ばれる 1 つのフィールドを持つ応答 (匿名) オブジェクトのリストです。コメントは、その名前にもかかわらず、実際にはオブジェクトです。

于 2012-08-02T17:42:07.357 に答える
0

JSONは正常に検証されます。その JSON の一番上のコンテナーは、オブジェクトではなく配列です。試す:

List<Response> responses = gson.fromJson( contents, Response.class );
System.out.println(responses[0].getCommentsList());
于 2012-08-02T17:42:21.787 に答える