#json #parsing #key #updating
#json #Синтаксический анализ #Клавиша #обновление
Вопрос:
Я читаю файл json, который является файлом конфигурации для движка 3D-слайсера. Я использую следующий код (обобщенный, а не полный)
Dim json As String = File.ReadAllText("C:tmptheme.json")
Dim jsonObj As Object = Newtonsoft.Json.JsonConvert.DeserializeObject(json)
Я считываю определенное значение из файла и помещаю значение (значения RGB) в текстовое поле и показываю найденный цвет в поле с картинками:
Dim read = Newtonsoft.Json.Linq.JObject.Parse(json)
col = read.Item("colors")("layerview_inset_0").ToString
col = Replace(col, "[", "")
col = Replace(col, "]", "")
col = Trim(col)
TextBox1.Text = Trim(Replace(col, " ", ""))
cols = Split(col, ",")
PictureBox1.BackColor = Color.FromArgb(cols(0), cols(1), cols(2))
Все это работает нормально.
Что я делаю дальше, это загружаю палитру цветов, нажав на поле с картинками и выбрав другой цвет :
With ColorDialog1
'Get the current color from the picturebox
.Color = ColorDialog1.Color
If .ShowDialog = DialogResult.OK Then
Me.PictureBox1.BackColor = .Color
TextBox1.Text = .Color.R.ToString amp; "," amp; .Color.G.ToString amp; "," amp; .Color.B.ToString amp; "," amp; "255"
code = "[" amp; .Color.R.ToString amp; "," amp; .Color.G.ToString amp; "," amp; .Color.B.ToString amp; "," amp; "255" amp; "]"
End If
End With
Это создает строковое значение (код), которое я затем использую для замены ключа в файле:
jsonObj("colors")("layerview_inset_0") = code
а затем запишите обновленный файл обратно
Dim output As String = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented)
File.WriteAllText("C:tmptheme.json", output)
Это также работает нормально, но вставленное значение заключено в двойные кавычки.
Исходное значение в файле выглядит следующим образом :
"layerview_inset_0": [
255,
255,
255,
255
],
Но после моего обновления это :
"layerview_inset_0": "[0,0,160,255]",
Это приводит к сбою программы при загрузке файла.
Если я удаляю двойные кавычки, все работает нормально.
Я раньше не работал с файлами json, и потребовалась целая вечность, чтобы зайти так далеко. Как я могу добавить нужные мне данные в файл json и НЕ заключать их в двойные кавычки?
Я ожидаю, что это потому, что я вставляю значение в виде строки, но я не знаю другого способа сделать это, поскольку мне нужно убедиться, что я также добавляю [ и ], а также каждое из значений RGB, подобных исходному формату.
Все работает хорошо, за исключением добавления двойных кавычек вокруг нового значения в файле, но как мне добавить эти данные в файл, чтобы этого не произошло? Я был бы признателен за любые рекомендации по этому поводу, учитывая, что это моя первая попытка проанализировать файл json и заменить значение ключа, поэтому, пожалуйста, будьте добры. Вероятно, я все делаю неправильно!