簡體   English   中英

C#Web Api將POST json作為自定義字符串類型

[英]C# Web Api GET POST json as custom string type

使用PutGet請求,我會收到一個應該包含json字符串的字段的空字符串。

例如:我放下以下Json:

{
  "card": {
    "foo": "bar",
    "xyz": "dby"
  }
}

現在,如果接收類具有JObject類型的成員,那么它將被正確映射

public class contact {
     public int id { get; set; }
     public string name { get; set; }
     public JObject card { get; set; }
}

但是,如果我將類型更改為可以接收所有JTokens的自定義字符串類型:

public class contact {
      public int id { get; set; }
      public string name { get; set; }
      public JsonString card { get; set; } //**Changed HERE**//
    }

然后,Put和Get方法都顯示空字符串。

JsonString如下所示:

public class JsonString
{
        private string _json;

        public JsonString (string json)
        {
            this._json = json;
        }

        public string Value()
        {
            return _json;
        }

        public override int GetHashCode()
        {
            return _json.GetHashCode();
        }

        public override bool Equals(object obj)
        {
            return (obj is JsonString) && this.GetHashCode() == obj.GetHashCode();
        }
        public override string ToString()
        {
                return _json;
        }
}

jsonString類更多,但在此上下文中可能不需要。 知道為什么put / Get返回空字符串以及如何解決這個問題?

編輯:

Put看起來像這樣:

[HttpPut]
 [Route("contacts/{contactid}")]
 public HttpResponseMessage update(int id, contact c) {
 contact.update(c);
}

JObject看起來像這樣:

public class JObject : JContainer, IDictionary<string, JToken>, 
ICollection<KeyValuePair<string, JToken>>, IEnumerable<KeyValuePair<string, JToken>>, 
IEnumerable, INotifyPropertyChanged, ICustomTypeDescriptor, INotifyPropertyChanging

你得到的只是一個字符串,而JObject充當鍵值數據結構。

你不能像這樣映射它。 你可能對動態對象有更好的運氣,但仍然不是那么簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM