代码之家  ›  专栏  ›  技术社区  ›  So_oP

输入字符串错误

  •  1
  • So_oP  · 技术社区  · 8 年前

    我出错了 输入字符串格式不正确

    这是我的绳子

    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 回复  |  直到 8 年前
        1
  •  7
  •   GPW    8 年前

    你需要逃离 { 符号使用 string.Format() : 而不是 { 使用 {{ 而不是 } 使用 }}

    注:这适用于 { 要在结果字符串中显示的符号。

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

        2
  •  2
  •   Anant Dabhi    8 年前

    您还可以使用字符串插值。此功能在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}\"}}";
    
        3
  •  1
  •   Marco Salerno    8 年前

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

    编辑:我没有注意到缺少的双,当您使用字符串格式时,必须每 { } 为了逃避它