繁体   English   中英

C#MVC 4 Web API-从JSON字符串返回对象

[英]c# MVC 4 Web API - Return object from JSON string

我正在使用MVC 4 Web API来构建将始终返回JSON的服务层。

我的api方法调用实际上调用了另一个服务,该服务返回JSON对象。 然后,我只想将此JSON对象传递回我的返回对象,但是我不确定要使用哪种返回类型。

如果我使用字符串,它将JSON对象包装在引号中。

顺便说一句,我已经将默认的MediaTypeFormatter更改为JSON。

这是JSON对象的示例:

{
  "responseHeader":{
  "status":0,
   "QTime":0,
   "params":{
     "indent":"on",
     "q":"id:100001",
     "wt":"json"}},
  "response":{"numFound":1,"start":0,"docs":[
  {
    "Header":"Test Header",
    "MaxPrice":515.0,
    "ApartmentName":"Apartment 1",
    "MaxBathrooms":4.0,
    "Pool":true,
    "MinBathrooms":2.0,
    "MaxBedrooms":4,
    "CoveredParking":false}]
  }}

在Beta版本中,可以使用JsonValue (来自System.Json命名空间)。 如果对其他服务的调用返回了包含JSON数据的字符串,则可以调用JsonValue.Parse将其加载到对象中以返回。

在RC版本中(或在http://aspnetwebstack.codeplex.com中的当前位中),您可以使用JToken对象(来自Newtonsoft.Json.Linq命名空间)-默认的JSON序列化程序和JSON DOM现在来自。 JSON.NET库。

要从MVC返回Json,请使用JsonResult。 您可以首先使用DataContractJsonSerializer将字符串转换为对象。

http://shashankshetty.wordpress.com/2009/03/04/using-jsonresult-with-jquery-in-aspnet-mvc/

因此,问题出在我先获取一个序列化的json对象,然后在覆盖默认XML MediaTypeFormatter的JavaScriptSerializerFormatter中重新序列化。

我通过返回JsonValue然后检查类型而不重新序列化来解决此问题。

感谢carlosfigueira对找到此内容的帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM