【问题标题】:Get the length of jsonResults.Data in C#在 C# 中获取 jsonResults.Data 的长度
【发布时间】:2017-10-18 16:06:55
【问题描述】:

我想检查 jsonResults.Data(包含对象列表)长度是否大于 jsonResults.MaxJsonLength(我将其设置为 int.MaxValue)以避免以下错误:“使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错. 字符串的长度超过了 maxJsonLength 属性设置的值。"。

所以我想我需要将列表转换为字符串,以获取字符数。

你知道怎么做吗?

(我不能使用 Json.Net,因为它需要 NuGet 客户端版本“2.12”+,但我的 NuGet 版本是“2.8.60610.756”,我不想更新它。)

谢谢。

【问题讨论】:

  • 您的问题缺少很多细节,无法帮助人们回答您的问题。比如jsonResults是什么类型?
  • @itsme86 谢谢。但你是什么意思? jsonRssults.data 是一个包含对象列表的简单 json。
  • 我询问了jsonResults。您说您将jsonResults.MaxJsonLength 设置为特定值以避免错误。错误来自什么?那是什么?
  • @itsme86,我编辑了这个问题。现在清楚了吗?
  • @Pac0:绝对不正确,我的问题不是如何设置 MaxJsonLength,而是如何检查 json 数据的长度。

标签: c# json


【解决方案1】:

您可以尝试序列化您的 json 并捕获可能的异常:

using System.Web.Script.Serialization;

public static bool IsJsonLengthValid(object myObj) {
    try {
         var jsonValue = new JavaScriptSerializer().Serialize(myObj);
    } catch(InvalidOperationException e) {
         return false;
    } 
    return true;
}

另外,如果MaxJsonLength 不够大,您可以使用以下方法增加其大小:

<configuration> 
   <system.web.extensions>
       <scripting>
           <webServices>
               <jsonSerialization maxJsonLength="50000000"/>
           </webServices>
       </scripting>
   </system.web.extensions>
</configuration> 

【讨论】:

  • 谢谢。但我的 json 值不是字符串而是数组。 (我真的忘了把它写在问题中,对不起。)所以问题是我怎样才能得到列表对象的字符数。这意味着以某种方式将 json 对象转换为字符串。
  • 我在问题中写道,我将 MaxJsonLength 属性设置为可能的最大值:int.MaxValue。
猜你喜欢
  • 2011-02-20
  • 2010-11-15
  • 1970-01-01
  • 2011-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多