2

私はそのような文書のスキームを持っています:

{
  "_id" : ObjectId("4fbb728d80db260988580e05"),
  "titleFull" : "Foo, Inc",
  "titleShort" : "Foo",
  "countries" : [
     ObjectId("4fba04ef80db260988f8b607"),
     ObjectId("4fba05f880db260988cd5cfd") ],
  "type" : "company"
}

そして、ASP.NET MVC 4 Web APIプロジェクトのそのようなクラス:

public class Company
{
  [BsonRepresentation(BsonType.ObjectId)]
  public String id { get; set; }
  public String titleFull { get; set; }
  public String titleShort { get; set; }
  //[BsonRepresentation(BsonType.ObjectId)]
  //public String[] countries { get; set; } — not working
  public ObjectId[] countries { get; set; }
  public String type { get; set; }
}

でGETリクエストを送信する/api/countriesと、JSONドキュメントを受信します(MVCデシリアライズです)。

{
  "id": "4fba097e80db2609886ce7f2",
  "titleFull": "Foo, LLC",
  "titleShort": "Foo",
  "countries": [
    {
      "_increment": 16299527
      "_machine": 8444710
      "_pid": 2440
      "_timestamp": 1337591023
    },
    {
      "_increment": 13458685
      "_machine": 8444710
      "_pid": 2440
      "_timestamp": 1337591288
    }
  ],
  "type": "company"
}

次のようなJSON応答を行う方法はありますか?

{
  "id": "4fba097e80db2609886ce7f2",
  "titleFull": "Foo, LLC",
  "titleShort": "Foo",
  "countries": ["4fba04ef80db260988f8b607","4fba05f880db260988cd5cfd"],
  "type": "company"
}
4

2 に答える 2

3

将来の読者への注意

RoberStamはグーグルグループで書いた:

デシリアライズコードにバグがあります。配列の場合、[BsonRepresentation]属性は実際には配列ではなく、アイテムに適用されます。

このためのJIRAチケットを作成しました:

https://jira.mongodb.org/browse/CSHARP-479

したがって、同じ問題がある場合は、このチケットを追跡してください。

于 2012-05-29T13:21:10.817 に答える
0

国のObjectIdを使用する代わりに、応答で文字列の配列を使用し、json応答で渡すIDを追加します。

publicstring[]国{取得; セットする; }

このように使用すると、jsonでの応答は次のようになります

"国":["4fba04ef80db260988f8b607"、 "4fba05f880db260988cd5cfd"]、

すでにidフィールドにある文字列を使用しています。

于 2012-05-28T08:39:19.487 に答える