У меня возникают проблемы с двойными кавычками при обновлении значения в файле json

#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 и заменить значение ключа, поэтому, пожалуйста, будьте добры. Вероятно, я все делаю неправильно!