【发布时间】:2014-09-08 07:00:34
【问题描述】:
我正在使用 WebRequest 将 JSON 对象发送到休息服务器。 ContentType 设置为 application/json
原始类被序列化为 JSON 字符串,然后将字符串转换为字节(使用 BlockCopy 使其成为 unicode)并通过 HTTP 发送。
在服务器端,我查看一个 JContainer 对象而不是字符串(可能是内容类型的 b/c)
如何使用 JSON.NET 直接反序列化此对象?
我能够将其转换为字符串,然后对其进行反序列化,但由于字符串不可读(许多 \0 来自 unicode 转换......),我无法追踪一些错误。
我的问题是 - 我可以反序列化原始 JSON 对象吗? 有没有办法将此对象转换为常规的 ASCII 字符串?
public void Put(MyClass cls)
{
}
// I get nothing
public void Put(JContainer cls)
{
string myjson = cls.ToString()
** Update: This string is the original JSON but in UNICODE.
** this text doesn't deserialized to the original class.
}
【问题讨论】:
-
写这行会得到什么 -
dynamic dynObj = JsonConvert.DeserializeObject(json); -
DeserializeObject 想要一个字符串。我得到一个对象,我发现它是 JContainter 对象。
-
当您说“我审查 JContainer 对象而不是字符串”时,您的确切意思是什么?这是端点中的参数吗?如果是这样,它在代码中是什么类型?如果它是一个对象而不是 json.net 可能会为您反序列化为通用对象,这意味着您可以只使用所需的对象作为参数类型,并且应该注意事项。
-
更好 - 发布您的网络方法的代码,以便我们了解您已经尝试过的内容。
-
自动转换不起作用(可能是因为它是一个超出自动转换器范围的嵌套类),所以如果我使用实际类作为参数,我会在所有属性中得到 null。
标签: c# json rest asp.net-web-api