【发布时间】:2017-07-23 14:01:31
【问题描述】:
通过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; }
}
但是,如果我将类型更改为可以接收所有 JToken 的自定义字符串类型:
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 会返回空字符串,我该如何解决?
编辑:
看跌期权看起来像这样:
[HttpPut]
[Route("contacts/{contactid}")]
public HttpResponseMessage update(int id, contact c) {
contact.update(c);
}
【问题讨论】:
-
这并不是对您的问题的真正回应,但如果您有时间看一下 Newtonsoft.Json,它很容易使用,并为您提供正确的序列化和反序列化到 json 和向后的对象。
-
您到底想在
JsonString中做什么?
标签: c# json string asp.net-web-api put