无法在 Branch.io 中通过 C# 分配 $desktop_url 和 $marketing_title
Unable to assign $desktop_url and $marketing_title via C# in Branch.io
我正在将 branch.io 请求复制到 C# 中以获得 API 并尝试通过 NewtonSoft 再次序列化它们来创建 URL。我已经很好地复制了 URL 创建请求的主要部分,它确实生成了一个 URL。但是当我尝试在查询中定义 desktop_url 和 marketing_title 时遇到问题。
{"type":2, "branch_key":"key_test_lerbZ22zyjfpfFtl2auzukafywi220dN", "campaign":"new_product_annoucement", "channel":"email", "tags":["monday", "test123"], "data":"{\"name\": \"Alex\", \"email\": \"alex@branch.io\", \"user_id\": \"12346\", \"$desktop_url\": \"https://www.google.com\",\"$marketing_title\": \"This is Awesome\"}"}
正如您从 JSON 查询中看到的,桌面 URL 和营销标题的前面都有一个 $ 符号,即 $desktop_url 和 $marketing_title .
我认为这是阻止我在 C# 中创建副本的问题。我知道查询是正确的,就像你现在 运行 它一样,它肯定会 link 到 Google的搜索页面。
我的C#代码如下:
[HttpPost]
public string GetWithBody([FromBody] getInfo info)
{
String mesh = info.affCode + "=========>" + info.appType;
using (var client = new HttpClient())
{
var request = new branchIOinfo()
{
type = 2,
branch_key = "key_test_lerbZ22zyjfpfFtl2auzukafywi220dN",
campaign = info.appType,
alias = info.affCode,
data = new BranchRequestData
{
desktop_url = "https://www.google.com/"
}
};
var response = client.PostAsync("https://api.branch.io/v1/url",
new StringContent(JsonConvert.SerializeObject(request).ToString(),
Encoding.UTF8, "application/json")).Result;
if (response.IsSuccessStatusCode)
{
dynamic content = JsonConvert.DeserializeObject(
response.Content.ReadAsStringAsync()
.Result);
return content.url;
}
else
{
return "Error Creating URL";
}
我的C#模型如下:
namespace BranchIOAPI.Models
{
public class getInfo
{
public string affCode { get; set; }
public string appType { get; set; }
}
public class branchIOinfo
{
public int type { get; set; }
public string branch_key { get; set; }
public string campaign { get; set; }
public string alias { get; set; }
public BranchRequestData data { get; set; }
}
public class BranchRequestData
{
public string desktop_url { get; set; }
}
}
我如何在此代码中复制 $ 符号,或者复制该 JSON 查询的正确方法是什么。
Alex 来自 Branch:
以$
开头的参数只是我们系统中的遗留约定。您可以像指定任何其他参数一样指定这些参数,因此除非我忘记了 C# 的特殊之处,否则只需使用 $desktop_url
和 $marketing_url
作为 data
对象内的键就可以正常工作.
虽然这里提到了 Branch,但问题实际上是关于在使用 C# 时如何在序列化期间更改 属性 名称。
我认为这里合适的方法是使用 JsonPropertyAttribute:http://www.newtonsoft.com/json/help/html/JsonPropertyName.htm
所以在 class 定义中你会做这样的事情:
public class BranchRequestData
{
[JsonProperty("$desktop_url")]
public string desktop_url { get; set; }
}
我正在将 branch.io 请求复制到 C# 中以获得 API 并尝试通过 NewtonSoft 再次序列化它们来创建 URL。我已经很好地复制了 URL 创建请求的主要部分,它确实生成了一个 URL。但是当我尝试在查询中定义 desktop_url 和 marketing_title 时遇到问题。
{"type":2, "branch_key":"key_test_lerbZ22zyjfpfFtl2auzukafywi220dN", "campaign":"new_product_annoucement", "channel":"email", "tags":["monday", "test123"], "data":"{\"name\": \"Alex\", \"email\": \"alex@branch.io\", \"user_id\": \"12346\", \"$desktop_url\": \"https://www.google.com\",\"$marketing_title\": \"This is Awesome\"}"}
正如您从 JSON 查询中看到的,桌面 URL 和营销标题的前面都有一个 $ 符号,即 $desktop_url 和 $marketing_title .
我认为这是阻止我在 C# 中创建副本的问题。我知道查询是正确的,就像你现在 运行 它一样,它肯定会 link 到 Google的搜索页面。
我的C#代码如下:
[HttpPost]
public string GetWithBody([FromBody] getInfo info)
{
String mesh = info.affCode + "=========>" + info.appType;
using (var client = new HttpClient())
{
var request = new branchIOinfo()
{
type = 2,
branch_key = "key_test_lerbZ22zyjfpfFtl2auzukafywi220dN",
campaign = info.appType,
alias = info.affCode,
data = new BranchRequestData
{
desktop_url = "https://www.google.com/"
}
};
var response = client.PostAsync("https://api.branch.io/v1/url",
new StringContent(JsonConvert.SerializeObject(request).ToString(),
Encoding.UTF8, "application/json")).Result;
if (response.IsSuccessStatusCode)
{
dynamic content = JsonConvert.DeserializeObject(
response.Content.ReadAsStringAsync()
.Result);
return content.url;
}
else
{
return "Error Creating URL";
}
我的C#模型如下:
namespace BranchIOAPI.Models
{
public class getInfo
{
public string affCode { get; set; }
public string appType { get; set; }
}
public class branchIOinfo
{
public int type { get; set; }
public string branch_key { get; set; }
public string campaign { get; set; }
public string alias { get; set; }
public BranchRequestData data { get; set; }
}
public class BranchRequestData
{
public string desktop_url { get; set; }
}
}
我如何在此代码中复制 $ 符号,或者复制该 JSON 查询的正确方法是什么。
Alex 来自 Branch:
以$
开头的参数只是我们系统中的遗留约定。您可以像指定任何其他参数一样指定这些参数,因此除非我忘记了 C# 的特殊之处,否则只需使用 $desktop_url
和 $marketing_url
作为 data
对象内的键就可以正常工作.
虽然这里提到了 Branch,但问题实际上是关于在使用 C# 时如何在序列化期间更改 属性 名称。
我认为这里合适的方法是使用 JsonPropertyAttribute:http://www.newtonsoft.com/json/help/html/JsonPropertyName.htm
所以在 class 定义中你会做这样的事情:
public class BranchRequestData
{
[JsonProperty("$desktop_url")]
public string desktop_url { get; set; }
}