35

NewtonSoft.JSON を使用しています。実行時

JsonConvert.SerializeObject(myObject)

$idJSONに値を追加しています-次のように:

  "$id": "1",
  "BookingId": 0,
  "CompanyId": 0,
  "IsCashBooking": false,
  "PaymentMethod": 0,
  "IsReferral": false,
  "IsReferralPercent": false,
  "ReferralPaymentType": 0,
  "ReferralDues": 0,
  "PassengerId": 0,
  "DepartmentID": 0,
  "CostCenterID": 0,
  "DeadMiles": 0

$idJsonSerializerSettings またはその他の方法でこれを削除できますか?

はいの場合 - どのように...

4

6 に答える 6

53

このコードを WebApiConfig register メソッドに追加し、JSON のすべての $id を取り除きました。

var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.None;
于 2012-10-05T14:56:01.813 に答える
9

何らかの理由でカスタムの ContractResolver を使用している場合は、この他のスタック オーバーフローを見てください。

PreserveReferencesHandlingを「None」に設定しているにもかかわらず、Json.NetがEFオブジェクトに$ idを追加する

于 2013-10-14T17:36:57.067 に答える
2

「id」がクラスのプロパティである場合は、[JsonIgnore] 属性を適用します。それ以外の場合は、おそらくここにあなたの質問に対する答えがあります:

http://james.newtonking.com/json/help/index.html?topic=html/PreserveObjectReferences.htm

于 2012-07-19T10:04:48.333 に答える
1

カスタムの ContractResolver 設定は、PreserveReferencesHandling 設定をオーバーライドします。

DefaultContractResolver/IContractResolver の実装で、これを追加します。

public override JsonContract ResolveContract(Type type) {
    var contract = base.ResolveContract(type);
    contract.IsReference = false;
    return contract;
}

これは、カスタムの ContractResolver を使用しない PreserveReferencesHandling.None 設定と同様に動作します。

于 2017-11-03T00:04:19.727 に答える