JsonResult 对象到 JObject

JsonResult object to JObject

提问人:Wasyster 提问时间:9/24/2022 最后编辑:Peter CsalaWasyster 更新时间:9/24/2022 访问量:38

问:

我发现了一个问题,我感兴趣的是从对象 a 创建的最佳解决方案是什么。是这样创建的:JsonResultJObjectJsonResult

Json(new
{
    productId,
    gtin,
    mpn,
    sku,
    price,
    basepricepangv,
    stockAvailability,
    enabledattributemappingids = enabledAttributeMappingIds.ToArray(),
    disabledattributemappingids = disabledAttributeMappingIds.ToArray(),
    pictureFullSizeUrl,
    pictureDefaultSizeUrl,
    isFreeShipping,
    message = errors.Any() ? errors.ToArray() : null
});

它的值在字符串表示中如下所示:

var jsonResult = "{ productId = 1, gtin = null, mpn = null, sku = null, price = \"$25.00\", basepricepangv = null, stockAvailability = \"\", enabledattributemappingids = {int[0]}, disabledattributemappingids = {int[0]} }";

我需要更改这个,,json中的一些属性,,. 因为它不是有效的json字符串,所以我无法反序列化它。 是否有任何内置库或其他解决方案可以执行此操作。 THNX的

C# JSON 反序列化 jsonserializer jsonresult

评论

0赞 ProgrammingLlama 9/24/2022
learn.microsoft.com/en-us/dotnet/api/......
0赞 Serge 9/24/2022
我需要更改这个,,json中的一些属性,,.你能说出这是什么意思吗?

答:

0赞 Wasyster 9/24/2022 #1
private static readonly JsonSerializerSettings defaultSettings = new JsonSerializerSettings
        {
            NullValueHandling = NullValueHandling.Ignore,
            TypeNameHandling = TypeNameHandling.None,
            ContractResolver = new DefaultContractResolver(),
            DateFormatHandling = DateFormatHandling.IsoDateFormat,
            DateFormatString = @"yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK",
    };

public static string ToJson(this object o) =>
            o != null ? JsonConvert.SerializeObject(o, defaultSettings) : null;

评论

0赞 Peter Csala 9/24/2022
您能提供一些解释吗?
0赞 Serge 9/24/2022 #2

若要获取有效的 JSON,您需要

var json = JsonConvert.SerializeObject(new
{
    productId,
    gtin,
    mpn,
    sku,
    price,
    basepricepangv,
    stockAvailability,
    enabledattributemappingids = enabledAttributeMappingIds.ToArray(),
    disabledattributemappingids = disabledAttributeMappingIds.ToArray(),
    pictureFullSizeUrl,
    pictureDefaultSizeUrl,
    isFreeShipping,
    message = errors.Any() ? errors.ToArray() : null
});

return new JsonResult(json);