0

安らかなサービスに XStream を使用しています。ただし、Xstream では、同じ値を持つフィールドに対してさまざまな結果が得られます。それを想定 Book オブジェクト:

public class Book {
 public String name "myName";
 public List <String> authors = new List <String> ();
 public String subject "mySubject";

 public Book() {}
}

このためのjsonは次のとおりです。

{
  "Book": {
    "name": "myName",
    "authors": "",
    "subject": ["mySubject"]
  }
}

ただし、著者をコレクションに追加すると、別の結果が得られます。

{
  "Book": {
    "name": "myName",
    "authors": ["author1", "author2", "author3"],
    "subject": "mySubject"
  }
}

誰かがこの問題に遭遇し、解決策を知っていますか?

4

1 に答える 1

0

そもそも、上記の Book インスタンスにはエラーが含まれています。これが私がそれがどのように見えるべきだと思うかです:

public class Book{
    public String name = "myName";
    public List authors = new ArrayList();
    public String subject = "mySubject";

    public Book(){
    }
}

今:

{"Book":{"name":"myName", "authors":"", "subject":["mySubject"]}}

Bookこれが、上記のオブジェクトに対して xstream が返すものであると確信していますか? subjectプロパティは でStringあり、String[]または他のタイプのコレクションではないため、これは正しくないようです。最初の例 (著者のいない本) の JSON エンコーディングは次のようになります。

{"Book":{"name":"myName", "authors":"", "subject":"mySubject"}}

Bookあなたがこのように見えない限り:

public class Book{
    public String name = "myName";
    public List authors = new List();
    public String[] subject = {"mySubject"};

    public Book(){
    }
}

結論: サブジェクトをコレクションとして宣言していないことを確認してください。

おまけのヒントとして、質問に実際のコードを投稿してみてください。その方が意味のある答えを得るのが簡単です。だから私の推測では、あなたのBookクラスは対象をある種のコレクションであると宣言しています

于 2010-05-20T22:29:27.060 に答える