输入字符串错误

时间:2018-07-13 09:47:47

标签: c# asp.net .net json string

我遇到错误输入字符串的格式不正确

这是我的字符串

string requestData = string.Format("{\"api_version\":{0},\"method\":\"{1}\",\"merchant_account\":\"{2}\",\"merchant_password\":\"{3}\",\"transaction_unique_id\":\"{4}\",\"amount\":{5},\"currency\":\"{6}\",\"callback_url\":\"{7}\",\"user_id\":\"{8}\",\"user_ip\":\"{9}\",\"user_email\":\"{10}\",\"card\":{\"card_number\":\"{11}\"}", apiVersion, method, merchantAccount, merchantPassword, transactionId, amount, currency, callbackUrl, id, ip, mail, cardNumber);

所有变量都是字符串,没有类型转换。这段代码有什么问题?

3 个答案:

答案 0 :(得分:7)

您需要使用{转义string.Format()符号:     代替{使用{{     代替}使用}}

注意:这适用于要出现在结果字符串中的{符号。

此外,如果您要创建JSON,我强烈建议您使用JSON.Net和Serialize<>,而不要像这样手动进行。

答案 1 :(得分:2)

您还可以使用String插值,此功能在C#6和更高版本中可用

string requestData = $"{{\"api_version\":{apiVersion},\"method\":\"{method}\",\"merchant_account\":\"{merchantAccount}\",\"merchant_password\":\"{merchantPassword}\",\"transaction_unique_id\":\"{transactionId}\",\"amount\":{amount},\"currency\":\"{currency}\",\"callback_url\":\"{callbackUrl}\",\"user_id\":\"{id}\",\"user_ip\":\"{ip}\",\"user_email\":\"{mail}\",\"card\":{{\"card_number\":\"{cardNumber}\"}}";

答案 2 :(得分:1)

如果每个期望的参数都是一个字符串,则说明api版本缺少引号!

string requestData = string.Format("{{\"api_version\":\"{0}\",\"method\":\"{1}\",\"merchant_account\":\"{2}\",\"merchant_password\":\"{3}\",\"transaction_unique_id\":\"{4}\",\"amount\":{5},\"currency\":\"{6}\",\"callback_url\":\"{7}\",\"user_id\":\"{8}\",\"user_ip\":\"{9}\",\"user_email\":\"{10}\",\"card\":{{\"card_number\":\"{11}\"}}}}", apiVersion, method, merchantAccount, merchantPassword, transactionId, amount, currency, callbackUrl, id, ip, mail, cardNumber);

编辑:我没有注意到缺少的双精度{},当您使用字符串格式时,必须将每个{}都加倍以使其逃逸