Хорошо, поэтому, отправив вопрос, отправился на обед, вернулся, и я нашел решение. Вместо использования данных расширения JSON.nets я обнаружил, что у них есть функция «слияния» http://james.newtonking.com/archive/2014/08/04/json-net-6-0-release -4-json-merge-dependency-injection
IMO Я думаю, что это намного чище и решил пойти с этим методом.
Ниже приведен образец, который я писал
public class Cell
{
public string Text { get; set; }
public int ID { get; set; }
public CellStyle Style { get; set; }
}
public class CellStyle
{
public string BgColor { get; set; }
public string TextColor { get; set; }
}
string json = @"{
'Text': 'My Cell',
'ID': 20,
'TsID': 100,
'Style': {
'BgColor' : 'Red',
'TextColor' : 'Black',
'Caption' : 'Help My Cell',
}
}";
var orgCell = JsonConvert.DeserializeObject(json);
orgCell.Style.TextColor = "White";
orgCell.Style.BgColor = "Blue";
var obj = JsonConvert.SerializeObject(orgCell);
JObject o1 = JObject.Parse(json);
JObject o2 = JObject.Parse(obj);
o1.Merge(o2, new JsonMergeSettings
{
// union array values together to avoid duplicates
MergeArrayHandling = MergeArrayHandling.Union
});
o1.ToString(); // gives me the intended string
|
Документация Terraform содержит раздел о многострочных строках с использованием <<EOF your multiline string EOF
:
resource "kubernetes_service" "my-service" {
"metadata" {
name = "my-service"
annotations {
"getambassador.io/config" = <<EOF
apiVersion: ambassador/v0
kind: Mapping
name: my_service_mapping
prefix: /my-service/
service: my-service
EOF
}
}
"spec" {
selector {
app = "MyApp"
}
port {
protocol = "TCP"
port = 80
target_port = "9376"
}
}
}
Убедитесь, что в конфигурации yaml нет тройной черты (---
). Terraform анализирует это неправильно.