首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在.net内核中设置最大Json长度

如何在.net内核中设置最大Json长度
EN

Stack Overflow用户
提问于 2019-08-28 19:15:29
回答 2查看 6.3K关注 0票数 1

在.net核心技术之前,我们可以在.net核心的web.config .but中添加最大json大小,如何设置最大json大小?在哪里呢?

EN

回答 2

Stack Overflow用户

发布于 2019-08-28 19:39:29

您需要在序列化级别对此进行管理。不确定您是新的Microsoft Json还是NetwtonSoft json

当微软需要使用DataContractJsonSerializer时,当使用NetwontSoft have a look at mel-green's solution时,你可以用字节大小替换进度,如果太大则抛出错误。另一种选择是使用选项,并设置您自己的ITraceWriter,它不进行交易,但在较大时抛出错误。

一个提示,当使用Json时,你可以修饰属性,因为你可以缩短属性名称。如下所示:

代码语言:javascript
运行
复制
[JsonProperty("A1")]
private int SomeReallyLongPropertyName;

确保不会产生重复的名称,然后json将通过别名进行映射。

另一种使json更短的方法是将其转换为更小的东西。

代码语言:javascript
运行
复制
[JsonConverter(typeof(UTCDateTimeConverter))]
[JsonProperty("DT")]
public DateTime Date { get; set; }

转换器:

代码语言:javascript
运行
复制
public sealed class UTCDateTimeConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(DateTime?);
    }
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        if (reader.Value is null) return null;
        try
        {
            return new DateTime((long)reader.Value);
        }
        catch
        {
            if (DateTime.TryParse(reader.Value.ToString(), out DateTime d))
                return d;
            else
                return null;
        }
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        var val = ((DateTime)value).Ticks;
        writer.WriteValue(val);
    }
}

你也可以通过实现上面的代码来修饰你想要转换成警告的类,如果这个类的大小太大,你可以通过改变WriteJson的实现来监控你的大小,但是这并不是你所要求的,因为它不能处理整个流。

票数 0
EN

Stack Overflow用户

发布于 2019-08-28 20:25:20

您可以在序列化级别处理此问题。你有没有试过做一些类似下面的事情?

代码语言:javascript
运行
复制
// Creates an instance of your JavaScriptSerializer
// and Setting the MaxJsonLength

   var serializer = new JavaScriptSerializer() { MaxJsonLength = 86753090 };

// Perform your serialization

   serializer.Serialize("Your JSON Contents");
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57691118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档