繁体   English   中英

如何添加、删除、更新、读取 JSON 文件中的一个条目?

[英]How to add, delete, update, read only one entry in a JSON file?

问题。
1.如何添加、删除、更新、读取一个JSON文件中的一个条目?
2. 是否可以以编程方式从文件“SettingJson.json”中添加、删除条目?

描述。 我建议使用 JSON 文件来存储应用程序设置。
如何读写整个文件,我想通了。

如果我理解正确,那么:
删除:
1.从“Settings.cs”类中删除该属性;
2.从文件“SettingJson.json”中删除属性;

添加:
1.从“Settings.cs”类中添加一个属性;
2.从文件“SettingJson.json”中添加一个属性;

更新:
???

读:
???

设置.cs

namespace ConsoleApp
{
    public class Settings
    {
        public string NameSetting1 { get; set; }
        public string NameSetting2 { get; set; }                
        public string NameSetting3 { get; set; }

    }
}

程序.cs

// 
using Newtonsoft.Json;
using System.IO;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {

            Settings[] settings = new Settings[] { };
            settings = FillArrayAll();

            SaveDataArray(settings);
        }



        static Settings[] FillArrayAll()
        {
            Settings[] settings = new Settings[]
            {
                new Settings()
                {
                    NameSetting1 = "ValueSetting_1",
                    NameSetting2 = "ValueSetting_2",
                    NameSetting3 = "ValueSetting_3"
                }
            };
            return settings;
        }


        static Settings[] FillArrayOneItem()
        {
            Settings[] settings = new Settings[]
            {
                new Settings()
                {                    
                    NameSetting2 = "ValueSetting_2",                    
                }
            };
            return settings;
        }


        static void SaveDataArray(Settings[] settings)
        {
            string path = $"{Environment.CurrentDirectory}\\SettingsFolder\\SettingJson.json";

            using (StreamWriter writer = File.CreateText(path))
            {
                string output = JsonConvert.SerializeObject(settings);
                writer.Write(output);
            }
        }

        public Settings[] ReadData()
        {
            string path = $"{Environment.CurrentDirectory}\\SettingsFolder\\SettingJson.json";            

            using (var reader = File.OpenText(path))
            {
                var fileText = reader.ReadToEnd();
                return JsonConvert.DeserializeObject<Settings[]> (fileText);
            }
        }


    }
}

更新 1

基于答案中的材料Pavel Anikhouski - 2020-02-28 16: 16

如何制作单独的方法?

“写”方法。
获取:

  • 键值(一个键或一组键);
  • 文件SettingJson.json路径。

施行:
- 将数据写入SettingJson.json

阅读方法。
获取:
- 钥匙(一把钥匙或一组钥匙);
- 文件SettingJson.json路径。

施行:
- 从SettingJson.json读取数据。

返回:
- 键值(值或值的集合)。

您可以使用Json.Linq与 json 进行操作,例如使用FromObject方法从Settings创建JObject并使用它进行操作

var settings = FillArrayAll();
//create JObject from settings
var created = JObject.FromObject(new { settings });
 //convert to json
var json = created.ToString();
//write json to a file
//…
//read it back
var updated = JObject.Parse(json);
//get value by key
var key = updated["settings"]?.FirstOrDefault()?["NameSetting1"];
//add new empty Settings to an array
(updated["settings"] as JArray)?.Add(JObject.FromObject(new Settings()));
//convert the updated object back to json
var resultJson = updated.ToString();

代码附近的注释应该很好解释。

您还可以在使用 LINQ 查询 JSON解析 JSON创建 JSON 中找到一些详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM