相关疑难解决方法(0)

强制将空JSON数组转换为Dictionary类型

问题是,json_encode()PHP 中的函数为正在读取其输出的工具留下了歧义.在PHP中,列表和词典都是相同类型的array.

echo json_encode([]); // []
echo json_encode(["5" => "something"]); // {"5": "something"}
Run Code Online (Sandbox Code Playgroud)

在JSON.NET中,我想强制两者[]{"5": "something"}转换为Dictionary<string, string>类型.但它识别[]为Dictionary的禁止结构并抛出异常.

我可以快速保留空的JSON数组或强制它们转换为空的Dictionary类型吗?

最终解决方案

我修改了接受的答案,使其成为通用的,并可重用于其他类型.

public class DictionaryOrEmptyArrayConverter<T,F> : JsonConverter
{
    public override bool CanWrite { get { return false; } }
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(Dictionary<T, F>);
    }
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        switch (reader.TokenType)
        {
            case JsonToken.StartArray:
                reader.Read();
                if (reader.TokenType …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

3
推荐指数
1
解决办法
1403
查看次数

标签 统计

c# ×1

json ×1

json.net ×1