您好我正在尝试从http响应反序列化json,但我总是在解析值时遇到此意外字符:S。路径错误。我该怎么做才能解决这个问题?
这是我的代码:
var client = new HttpClient();
///client.BaseAddress = new Uri("https://admin.cssholdings.com/api/v3/AuthenticateLivePOSAdmin/");
client.DefaultRequestHeaders.Add("APIApplicationID", _clientId);
client.DefaultRequestHeaders.Add("APIApplicationKey", _clientSecret);
var PostData = new List<KeyValuePair<string, string>>();
PostData.Add(new KeyValuePair<string, string>("strAdminUsername", adminusername));
PostData.Add(new KeyValuePair<string, string>("strAdminPassword", password));
PostData.Add(new KeyValuePair<string, string>("strAdminSecurityCode", securitycode));
HttpContent content = new FormUrlEncodedContent(PostData);
string res = "";
HttpResponseMessage response = client.PostAsync("https://admin.cssholdings.com/api/v3/AuthenticateLivePOSAdminLogin/", content).Result;
List<BO.AuthenticatedUser> authuser = JsonConvert.DeserializeObject<List<BO.AuthenticatedUser>>(response.Content.ToString());
然后这是我在fiddler上看到的json对象:
答案 0 :(得分:1)
我也有同样的问题。在我看来,问题是在json对象上使用ToString()方法,它返回DeserializeObject方法格式不正确的字符串。 你可以尝试使用这种方法(对我不起作用):
Newtonsoft.Json.Linq.JToken token = Newtonsoft.Json.Linq.JObject.Parse(jsonString);
string templateMsgText = (string)token.SelectToken("yourKey");
而我所做的是我直接接受了我的自定义类中的json字符串并通过get; set来访问它的值。
我是这样做的:
我的服务器端方法:
[WebMethod]
public static string onSubmit(TemplateDataText jsonString)
{
return jsonString.templateMsgText;
}
这是我的自定义类,旨在获取数据:
public class TemplateDataText{
public TemplateDataText(){}
[JsonProperty("text")]
public string templateMsgText { get; set; }
[JsonProperty("optionSelected")]
public string radioSelected { get; set; }
}
这是我的json来自ajax POST请求:
{"jsonString":{"text":"THIS IS THE TEXT THAT USER ENTERED","optionSelected":"2"}}
使用这些设置,我能够在服务器端方法中获取“text”值,并能够将其用于进一步处理。