JSON字符串被切断[重复]

Posted

技术标签:

【中文标题】JSON字符串被切断[重复]【英文标题】:JSON String gets cut off [duplicate] 【发布时间】:2017-08-07 20:44:32 【问题描述】:

我的应用程序是 ASP.NET Core 1.0 Web API。

如果我的控制器返回一个小的 JSON,那么一切正常。 但是,如果 JSON 变大,我会得到这个 error

Visual Studio 给了我这个error

这是创建数据的控制器和方法(缩短)

  [HttpGet]
  public async Task<IActionResult> GetUserData()
          
        return this.Ok(GetSomeData());
  

   private List<MyUser> GetSomeData()
   
       var userList = new List<MyUser>();
       for (int i = 0; i < 2500; i++)
       
            userList.Add(new MyUser
                Name = "Data",
                Age = i,
                Phone = "000",
            );
       
       return userList;
   

如果循环变大,我会收到上面列出的错误。

请记住,代码非常简化。但一切正常,直到返回大量数据。

我已尝试更改web.config 中的maxJsonLength,正如here 所述。

【问题讨论】:

有兴趣的朋友,我的问题在this帖子中得到了解答。 【参考方案1】:

我的问题是我的中间件会很快抛出异常并关闭响应

【讨论】:

【参考方案2】:

请看,使用 web api 和 json,您可以传输的数据量是有限的。但一种奇怪的方法可能是返回一个序列化为 json 的文本/纯文本数据。

因此,如果您将 GetUserData() 操作更改为这样:

[HttpGet]
public async Task<HttpResponseMessage> GetUserData()
     
   var result = GetSomeData();
   var response = Request.CreateResponse();
   response.Content = new StringContent(JsonConvert.SerializeObject(result));
   return response;

然后在您的客户端中,您可以使用JsonConvert.DeserializeObject 方法构造您的对象。

【讨论】:

感谢您的回答。这对我不起作用..当我尝试获取包“Microsoft.AspNet.WebApi.Core”时,我收到错误消息,它与“netcoreapp1.0”不兼容。因此我没有方法 CreateResponse();您还有其他建议吗? 我找到了一种解决方法来获取 Response 对象 link 我将使用 HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.Gone) 而不是 Request.CreateResponse() 但这对我不起作用..

以上是关于JSON字符串被切断[重复]的主要内容,如果未能解决你的问题,请参考以下文章

将文本字段更新为 JSON 字符串 - Javascript/JQuery [重复]

渲染JSON而不替换Jinja中的字符[重复]

C# URi 字符串太长,如何转换为 JSON raw [重复]

MySQL数据类型 - JSON数据类型

如何从 JSON 对象构建 JSON 字符串 [重复]

如何知道Json字符串中是不是存在密钥[重复]