2

私は json.net(newtonsoft) を使用しており、json リクエストを作成したいのですが、2 つの異なる辞書があり、それらに参加する方法がわかりません。

   Dictionary<string, HttpStatusCode> code = new Dictionary<string, HttpStatusCode>();
   code.Add("Message", statusCode);

Dictionary<string, IErrorInfo> modelState = new Dictionary<string, IErrorInfo>();
// some code to add to this modelState

編集

IErrorInfo にはいくつかのプロパティがあります

public interface IErrorInfo
    {
        SeverityType SeverityType { get; set; }
        ValidationType ValidationType { get; set; }
        string Msg { get; set; }
    }

私が行こうとしている結果は、このようなものです

{
  "Message": 400, // want this to be text but not sure how to do that yet (see below)
  "DbError":{
        "SeverityType":3,
        "ValidationType":2,
        "Msg":"A database error has occurred please try again."
        }
}

私は基本的にこれを達成しようとしています。

HttpError and Model Validation

For model validation, you can pass the model state to CreateErrorResponse, to include the validation errors in the response:

public HttpResponseMessage PostProduct(Product item)
{
    if (!ModelState.IsValid)
    {
        return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ModelState);
    }

    // Implementation not shown...
}

This example might return the following response:

HTTP/1.1 400 Bad Request
Content-Type: application/json; charset=utf-8
Content-Length: 320

{
  "Message": "The request is invalid.",
  "ModelState": {
    "item": [
      "Required property 'Name' not found in JSON. Path '', line 1, position 14."
    ],
    "item.Name": [
      "The Name field is required."
    ],
    "item.Price": [
      "The field Price must be between 0 and 999."
    ]
  }
}

この組み込みメソッドを使用しない理由は、すべてのビジネス ロジックを含む別の組み込みクラス ライブラリがあるためです。Web や mvc など (modelState など) に依存しないように維持したいと考えています。

これが、私が独自の種類のモデル状態を作成し、少し余分なものを作成した理由です。

4

1 に答える 1

1

1 つのディクショナリを使用するだけで、両方のディクショナリの項目をこのディクショナリに追加できるはずです。Json.NET は、期待どおりにすべてをシリアル化する必要があります。

于 2013-01-18T20:05:06.480 に答える