API 返回一个对象而不是字符串

API returning an object instead of string

我有一个 API,我通过改装设置了调用,但是在调用它时我收到的是一个对象而不是字符串,我不明白这里的问题是什么。

var userToken = await apiClient.LoginuserBySsnAsync(ssn);

API调用的定义:

        /// <summary>
        /// Login user by SSN.
        /// </summary>
        /// <param name="ssn">user SSN in 12 digit format.</param>
        /// <returns>user token.</returns>
        [Get("/api/login/loginssn")]
        Task<string> LoginUserBySsnAsync(string ssn);

在这种情况下,我进入“userToken”的 return 是:

"{\"userToken\":\"rgkjnrekljgtlwgktkwljhnglterkjhnyJuYmYiOjE2NDM2NjAxNDMsImV4cCI6MTY0NjA3OTM0MywiUGF0aWVudHNzbiwerlfkrlkgfnrejgnlrekjglmeMc\"}"

当我直接在 API 中执行时(招摇)我得到的响应是:

{
  "userToken": "rgkjnrekljgtlwgktkwljhnglterkjhnyJuYmYiOjE2NDM2NjAxNDMsImV4cCI6MTY0NjA3OTM0MywiUGF0aWVudHNzbiwerlfkrlkgfnrejgnlrekjglmeMc"
}

我期望的是:

"rgkjnrekljgtlwgktkwljhnglterkjhnyJuYmYiOjE2NDM2NjAxNDMsImV4cCI6MTY0NjA3OTM0MywiUGF0aWVudHNzbiwerlfkrlkgfnrejgnlrekjglmeMc"

我不确定问题出在哪里,因为我在这方面没有太多经验,但我感谢您提供的任何改进帮助

您的 API 正在 return 创建一个 JSON-serialized 对象。大概是这样的:

public class UserTokenClass {
    public string UserToken { get; set; }
}

[Get("/api/login/loginssn")]
public async Task<string> LoginUserBySsnAsync(string ssn) {
    
    // Magic

    return JsonConvert.SerializeObject(new UserTokenClass { UserToken = userTokenFromSomewhere });
}

如果你想让它 return 只是一个普通字符串,那么这样做:

return userTokenFromSomewhere;

如果您无法控制 API 代码,请在您的代码中反序列化响应:

var token = JsonConvert.DeserializeObject<UserTokenClass>(responseBody);