[英]C# string interpolation-escaping double quotes and curly braces
伙計們,
我正在從插值字符串構建一個JSON對象,而不是獲取轉義的工作原理。 我必須為API使用雙引號。
這不會插入花括號之間的表達式:
@"{{
""name"":""{taskName}"",
""products"": [
{""product"": ""ndvi_image"", ""actions"": [""mapbox"", ""processed""]},
{""product"": ""true_color"", ""actions"": [""mapbox"", ""processed""]}
],
""recurring"":true,
""query"": {
""date_from"": ""{dateFromString}"",
""date_to"": ""{dateToString}"",
""aoi"": {polygon}
},
""aoi_coverage_percentage"":90
}}";
這會拋出一堆錯誤 - 顯然,大括號沒有正確轉義:
$"{{
""name"":""{taskName}"",
""products"": [
{""product"": ""ndvi_image"", ""actions"": [""mapbox"", ""processed""]},
{""product"": ""true_color"", ""actions"": [""mapbox"", ""processed""]}
],
""recurring"":true,
""query"": {
""date_from"": ""{dateFromString}"",
""date_to"": ""{dateToString}"",
""aoi"": {polygon}
},
""aoi_coverage_percentage"":90
}}";
我應該如何格式化它以保留內部雙引號和外括號,同時允許插入單個括號內的值?
您似乎錯過了products
和query
對象的轉義:
$@"{{
""name"":""{taskName}"",
""products"": [
{{""product"": ""ndvi_image"", ""actions"": [""mapbox"", ""processed""]}},
{{""product"": ""true_color"", ""actions"": [""mapbox"", ""processed""]}}
],
""recurring"":true,
""query"": {{
""date_from"": ""{dateFromString}"",
""date_to"": ""{dateToString}"",
""aoi"": {polygon}
}},
""aoi_coverage_percentage"":90
}}";
除了@"..."
和$"..."
C#支持$@"..."
字符串,這是您在構建需要插值的多行字符串文字時所尋找的:
$@"{{
""name"":""{taskName}"",
""products"": [
{{""product"": ""ndvi_image"", ""actions"": [""mapbox"", ""processed""]}},
{{""product"": ""true_color"", ""actions"": [""mapbox"", ""processed""]}}
],
""recurring"":true,
""query"": {{
""date_from"": ""{dateFromString}"",
""date_to"": ""{dateToString}"",
""aoi"": {polygon}
}},
""aoi_coverage_percentage"":90
}}";
為了防止其他人正在考慮做同樣的事情,最好創建一個匿名類型並將其序列化為json有兩個原因:
taskName
有雙引號怎么辦?) 下面使用json.net進行序列化。
var jsonObj = new {
name = taskName,
products = new[] {
new { product = "ndvi_image", actions = new [] { new { mapbox = "processed" } },
new { product = "true_color", actions = new [] { new { mapbox = "processed" } }
},
recurring = true,
query = new {
date_from = dateFromString,
date_to = dateToString,
aoi = polygon
},
aoi_coverage_percentage = 90
};
var jsonString = JsonConvert.SerializeObject(jsonObj);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.