簡體   English   中英

如何在 .net 內核中設置最大 Json 長度

[英]How to Set Max Json Length in .net core

在 .net 核心技術之前我們可以在 web.config 中添加 maxjson 大小,但是在 .net 核心如何設置最大 Z6438DEEC16ECDF2FC4 在哪里?

您需要在序列化級別進行管理。 不確定您是新的 Microsoft Json 還是 NetwtonSoft json

當 Microsoft 需要使用DataContractJsonSerializer時, NetwontSoft 看看 mel-green 的解決方案時,您可以用字節大小替換進度,如果大則拋出錯誤。 另一種選擇是使用選項並設置您自己的不交易但在大時拋出錯誤的ITraceWriter

提示,使用 Json 時,您可以裝飾屬性以縮短屬性名稱。 像這樣:

[JsonProperty("A1")]
private int SomeReallyLongPropertyName;

確保雖然不要重復名稱,但 json 將通過別名 map 然后。

使 json 更短的另一種方法是將其轉換為更小的東西。

[JsonConverter(typeof(UTCDateTimeConverter))]
[JsonProperty("DT")]
public DateTime Date { get; set; }

轉換器:

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);
    }
}

您還可以通過執行上述操作來裝飾您想要轉換的 class 以警告大小是否過大,並更改 WriteJson 的實現以監視您的大小,但這不是您所要求的,因為它沒有解決整個 stream。

您可以在序列化級別處理此問題。 您是否嘗試過執行以下操作?

// Creates an instance of your JavaScriptSerializer
// and Setting the MaxJsonLength

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

// Perform your serialization

   serializer.Serialize("Your JSON Contents");

在.net core技術之前,我們可以在web.config中添加maxjson大小。但是在.net core中,如何設置maxjson大小? 在哪里?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM