[英]C# Web Api GET POST json as custom string type
使用Put
和Get
請求,我會收到一個應該包含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.