【问题标题】:Convert JSON string to JsonResult in MVC在 MVC 中将 JSON 字符串转换为 JsonResult
【发布时间】:2014-05-06 17:12:42
【问题描述】:

我们正在尝试制作模拟服务来服务 JSON。我们将纯 JSON 字符串存储在静态文件中,并希望将它们按原样提供给客户端,而不需要任何额外的包装器。 例如。我们有 json 字符串 {"result_code":200,{"name":"John", "lastName": "Doe"}},我们希望在客户端上获得 json 响应,就像这样,没有任何内容或数据包装器。

我们有使用数据契约并将 json 反序列化为 C# 对象的解决方案,但这有点复杂,我们不需要它。

谢谢

【问题讨论】:

  • 您能否更具体一点什么是“模拟服务” - 只是一些 API 实现(如测试过程中的 IMyServiceReturningJson),真实服务器,即用 ASP.Net 编写MVC(正如 Jededuah +1 建议的那样)或其他一些技术/语言,如 node.js?完全不同的东西?

标签: c# asp.net-mvc json serialization deserialization


【解决方案1】:

您可以通过引用 System.Web.Mvc 来做到这一点。我拼凑的一个快速控制台应用程序中的示例:

using System;
using System.Web.Mvc;
using Newtonsoft.Json;

namespace Sandbox
{
    class Program
    {
        private static void Main(string[] args)
        {
            //Added "person" to the JSON so it would deserialize
            var testData = "{\"result_code\":200, \"person\":{\"name\":\"John\", \"lastName\": \"Doe\"}}";

            var result = new JsonResult
            {
                Data = JsonConvert.DeserializeObject(testData)
            };

            Console.WriteLine(result.Data);
            Console.ReadKey();
        }

    }
}

你可以从 mock 方法中返回 JsonResult。

【讨论】:

  • 不好的建议,这需要反序列化并重新序列化对象才能返回。
【解决方案2】:

您可以通过手动发送内容来返回静态 JSON 字符串。

public ActionResult Tester()
{
    return Content("{\"result_code\":200,{\"name\":\"John\", \"lastName\": \"Doe\"}}", "application/json");
}

抱歉,这不是您要问的问题

【讨论】:

  • 这会将结果作为实际的 JSON,而不是带有包含 JSON 的字符串的正文。这绝对比公认的答案更容易在客户端使用。
猜你喜欢
  • 2011-02-10
  • 2016-09-12
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 2012-10-06
相关资源
最近更新 更多