JSON.NET解析器*似乎是双序列化我的对象

JSON.NET解析器*似乎是双序列化我的对象

我的问题是:

这是从我的WebAPI控制器返回的响应。

"[
   [
      {\"id\":\"identifier\"},
      {\"name\":\"foobar\"}
   ]]"

注意,响应被包装在引号中,所有嵌入的引号都被转义。这显然是个问题。是否有任何设置可以提供给JSON.NET序列化程序以防止这种情况发生?

编辑

正如p.s.w.g在他的回复中猜测的那样,我使用的是JSON.NET的

JsonConvert.SerializeObject(instance)

来执行我的序列化。

我这样做是因为当我构建我的自定义转换器时,我已经将它们包含在Json转换器中,在我的WepApiConfig中包含了DefaultSettings(显然,我认为这不会是一个问题)

我以前曾尝试将HttpGets的返回类型交换为“MyObjecttype”,响应是对象的ToString()方法的json表示形式…它让我知道序列化不是通过我的转换器传递的。

将我的HttpGets的返回类型从String更改为“MyObject类型”,并将这些转换器直接插入WebAPi的默认HttpConfiguration中。

config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new FooConverter());config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new BarConverter());

简单的方法。


收到一只叮咚
浏览 413回答 3
3回答

慕的地10843

API在发送共鸣之前进行序列化。例如:返回OK(YourUnSerializedObject);没必要帮你唱。

一只名叫tom的猫

在这一点上,我认为对我来说可能很重要,我必须使用我自己的Json转换器来完成这项任务。我从最初的描述中删除了它们,因为我不想提供不相关的信息。我需要能够调用JsonConvert.SerializeObject(或使用我的转换器的等效方法),并让它返回json而不是字符串。返回对象只会序列化对象的ToString(),我不能这样做。我也没有数据契约可以使用
打开App,查看更多内容
随时随地看视频慕课网APP