c# - 将 json 文件转换为字符串

标签 c# json

我正在 try catch 来自随机 Json 文件的所有节点的名称和值,但我不知道其结构(由用户上传)。

我可以循环遍历 json 字符串并获取我需要的信息,但如何从文件开始?如果我想反序列化它,我相信我需要一个类来保存该数据(而且我不知道文件结构)。

以下是我如何循环 json 字符串中的元素:

   string json = @"{
       'CPU': 'Intel',
       'PSU': '500W',
       'Drives': [
         'DVD read/writer'
         /*(broken)*/,
         '500 gigabyte hard drive',
         '200 gigabype hard drive'
       ]
    }";

        JsonTextReader reader = new JsonTextReader(new StringReader(json));
        while (reader.Read())
        {
            if (reader.Value != null)
            {
                Console.WriteLine("Token: {0}, Value: {1}", reader.TokenType, reader.Value);
            }
            else
            {
                Console.WriteLine("Token: {0}", reader.TokenType);
            }
        }

如何从文件中读取并将其设置为可由上面的代码处理的字符串?这听起来像是一个基本问题,但几个小时后我仍然在努力解决这个问题。我所看到的一切都希望您知道 Json 文件的结构,但在本例中我不知道。

最佳答案

这正是 dynamicExpandoObject 的用途!在这里,您可以将 JSON 反序列化为对象,然后遍历该对象的属性(在线查找如何使用 ExpandoObjects)。

var expandoConverter = new ExpandoObjectConverter();
dynamic obj = JsonConvert.DeserializeObject<ExpandoObject>(json, expandoConverter);

或者,如果您只是想以字符串形式从磁盘读取 json,则使用 string json = File.ReadAllText(filePathAndName);

上面的代码片段需要安装 NewtonSoft 包。

关于c# - 将 json 文件转换为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47584742/

相关文章:

c# - 如何在词典集中查找项目?

c# - 如何拦截捕获 WinForms 应用程序中的 TAB 键?

javascript - 将数据格式更改为 JSON

c# - 按下后退按钮时 Windows Phone 取消异步任务

c# - GOTO 是退出双 Foreach 的唯一方法吗?

c# - ASM 中小端到大端的快速转换

java - 云中个人资料隐私设置的数据结构

java - 如何正确地将 json 转换为对象,其中键实际上是一个变化的值?

javascript - 如果每个项目都投资了数年和数月,如何实现按对象按值(value)搜索

javascript - 如何从json中获取仅数字键值对