【问题标题】:Input string was wrong输入字符串错误
【发布时间】:2018-12-21 16:04:56
【问题描述】:

我收到一个错误输入字符串格式不正确

这是我的字符串

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);

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

【问题讨论】:

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


    【解决方案1】:

    您需要使用string.Format() 转义{ 符号: 而不是{ 使用{{ 而不是} 使用}}

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

    另外,如果您尝试创建 JSON,我强烈建议您使用 JSON.Net 和 Serialize<>,而不是像这样手动创建。

    【讨论】:

      【解决方案2】:

      您还可以使用字符串插值,此功能在 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}\"}}";
      

      【讨论】:

      • 如何在最后添加一个闭括号'}'?由于最后缺少括号,我从at得到了错误的json
      • 你需要多加一个}(括号)
      • 所以我做到了。我还有另一个错误说必须通过在插值字符串中加倍来转义字符'}',
      • 其实需要加两个}}括号
      【解决方案3】:

      如果每个预期的参数都是一个字符串,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);
      

      编辑:我没有注意到缺少的双 {},当您使用字符串格式时,您必须将每个 {} 加倍以转义它

      【讨论】:

        猜你喜欢
        • 2012-11-17
        • 1970-01-01
        • 1970-01-01
        • 2013-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多