首页 > 解决方案 > c#Visual Studio 2017如何将json对象数组元素添加到现有json

问题描述

我有 json 示例“TestConfigIdMapping.json”:

{
  "schema": "None",
  "TestMapping": [
    {
      "testId": "test_1",
      "testConfigs": [
        "platform1",
        "platform2",
        "platform3",
      ]
    },
    {
      "testId": "test_2",
      "testConfigs": [
        "platform2"
      ]
    }
  ]
}

使用 Newtonsoft.Json c# 库,我将如何添加 json 对象元素:

{
 "testId": "test_3",
 "testConfigs": [
   "platform1",
   "platform3"
  ]
}

到上面已经加载的json文件?

我的代码使用form1并在form2中显示json:

    class JsonTestMapping
    {
        [JsonProperty("schema")]
        string Schema = "None";
        [JsonProperty("TestConfigMapping")]
        public JsonObjects[] testConfigMapping { get; set; }
    }
    class JsonObjects
    {
        [JsonProperty("testId")]
        public string TestId { get; set; }
        [JsonProperty("testConfigs")]
        public string[] TestConfigs { get; set; }
    }
    class LoadJson
    {
        public string jsonValues = File.ReadAllText(@"C:\GITTest\TestIdConfigMapping.json");
    }


JsonObjects jsonObjects = new JsonObjects()
            {
                TestId = f1.Form1textbox.Text,
                TestConfigs = new string[]
                {
                    // set FormTextbox2 modifier = public
                    f1.FormTextbox2.Text
                }
            };

下面是Form2弹窗并显示json:

private void Form2_Load(object sender, EventArgs e)
        {
            Form2TextBox.ReadOnly = true;
            Form2TextBox.Multiline = true;
            Form2TextBox.ScrollBars = ScrollBars.Vertical;
            Form2TextBox.WordWrap = true;
            //string convertJsonFileSerialized = JsonConvert.SerializeObject(readJsonFile.jsonText);
            //List<ReadJsonFile> convertJsonFileDeserialized = JsonConvert.DeserializeObject<List<ReadJsonFile>>(readJsonFile.jsonText);
            //string finalJson = JsonConvert.SerializeObject(convertJsonFileDeserialized);

            LoadJson loadJson = new LoadJson();
            string myJsonValues = loadJson.jsonValues;
            JObject rss = JObject.Parse(myJsonValues);
            JArray TestConfigMapping = (JArray)rss["TestConfigMapping"];

            //List<JsonObjects> myList = JsonConvert.DeserializeObject<List<JsonObjects>>(myjsonRead);


            JsonObjects jsonObjects = new JsonObjects()
            {
                TestId = f1.Form1textbox.Text,
                TestConfigs = new string[]
                {
                    // set FormTextbox2 modifier = public
                    f1.FormTextbox2.Text
                }
            };
            List<JsonObjects> jsonList = new List<JsonObjects>();
            jsonList.Add(jsonObjects);
            string jsonResult1 = JsonConvert.SerializeObject(jsonObjects, Formatting.Indented);

            JsonTestMapping jsonTestConfigMapping = new JsonTestMapping()
            {
                testConfigMapping = new JsonObjects[]
                {
                    jsonObjects
                }
            };
            string jsonResult = JsonConvert.SerializeObject(jsonTestConfigMapping, Formatting.Indented);
            //ReadJsonFile readJsonFile = new ReadJsonFile();
            //string jsonResult2 = readJsonFile.jsonText;
            Form2TextBox.Text = rss.ToString();
        }

目标是拥有表格 1,其中包含 2 个插入“TestID”和“TestConfigs”的文本框输入。单击 button1 后,将 2 个输入文本转换为 Json 格式,然后单击“附加”按钮,将格式化的 Json 对象元素断言到已经存在的 json 文件配置中。

标签: c#jsonobjectvisual-studio-2017

解决方案


推荐阅读