从JSON字符串获取键值对,而无需使用json.net

时间:2019-02-25 08:59:51

标签: c# json key-value

我想从json字符串创建键值对:

string json = "[{\"Job\": \"Step\",\"Id\": \"D:\\\\file.CATPart\",\"Source\": \"V5\"},{\"Job\": \"Step\",\"Id\": \"D:\\\\file1.CATPart\",\"Source\": \"V5\"}]";

var jsonObj = new JavaScriptSerializer().Deserialize<List<Arguments>>(json);

foreach (var obj in jsonObj)
        {
            jobtype = obj.Job;
            SelectedId = obj.Id;
            source = obj.Source;    }

我当前正在反序列化到列表,但希望它是一个键值对,以避免在添加更多参数等方面出现问题。如何在不使用json.net或任何其他外部dll的情况下做到这一点?

2 个答案:

答案 0 :(得分:0)

正如@marsze所说,您必须编写自己的deserializer。 您可以使用List<Dictionary<string, object>>存储参数。

答案 1 :(得分:-1)

一个不好的解决方案是手动处理字符串,方法是遍历各行,然后使用string.split(':')。然后,您可以使用正则表达式清除所有非字母和数字,并将其插入您选择的枚举中。记住要小心处理嵌套和数组,(疯狂地进行单元测试)。

将占用大量资源,但可以完成工作。花费了两个星期的开发时间来正确实施和测试。

或者您可以从GitHub存储库复制已经有一些不错的解决方案的代码。也许可以反编译Newtonsoft?