我正在尝试反序列化尝试登录时将获取的json。但是出现错误 {Newtonsoft.Json.JsonReaderException:在完成读取JSON内容后遇到的其他文本:。路径”,第5行,位置3。反序列化之后,我的导航取决于该“消息”字符串
我正在获取的JSON(jsonObtained)
var jsonObtained = Regex.Unescape(stringObtained);
int startIndex = jsonObtained.IndexOf('[');
int endIndex = jsonObtained.LastIndexOf(']');
int length = endIndex - startIndex + 1;
var resultJSON = jsonObtained.Substring(startIndex, length);
T resultObject;//Generic type object
try
{
resultObject = JsonConvert.DeserializeObject<T>(resultJSON);//, settings);
removeLoadingAnimation();
return resultObject;
}
我如何尝试反序列化。
sqlcmd
任何帮助表示赞赏。
答案 0 :(得分:2)
您尝试提取子字符串的方式会导致JSON格式错误
该条目看起来是动态的,基于当前显示的代码。
重构对象模型以更好地匹配预期的JSON。
public partial class RootObject<T> {
[JsonProperty("Message")]
public Message[] Message { get; set; }
[JsonProperty("Entry")]
public T[] Entry { get; set; }
}
public partial class Message {
[JsonProperty("Mesaage")]
public string Mesaage { get; set; }
}
那种方式只是根据期望的类型反序列化响应
//...
var jsonObtained = Regex.Unescape(stringObtained);
T resultObject;//Generic type object
try
{
resultObject = JsonConvert.DeserializeObject<RootObject<T>>(jsonObtained);
removeLoadingAnimation();
return resultObject;
}
在这种情况下,假设T
是与JSON中的Entry
键匹配的所需类型
否则,您应该创建一个与预期JSON匹配的模型
public partial class RootObject{
[JsonProperty("Message")]
public Message[] Message { get; set; }
[JsonProperty("Entry")]
public Entry[] Entry { get; set; }
}
public partial class Message {
[JsonProperty("Mesaage")]
public string Mesaage { get; set; }
}
public partial class Entry {
[JsonProperty("User_Id")]
public long UserId { get; set; }
[JsonProperty("Name")]
public string Name { get; set; }
[JsonProperty("Client_Id")]
public long ClientId { get; set; }
[JsonProperty("Role")]
public long Role { get; set; }
[JsonProperty("LoginName")]
public string LoginName { get; set; }
[JsonProperty("Email")]
public string Email { get; set; }
[JsonProperty("IsInternalUser")]
public string IsInternalUser { get; set; }
}
并使用它
//...
var jsonObtained = Regex.Unescape(stringObtained);
RootObject resultObject;
try
{
resultObject = JsonConvert.DeserializeObject<RootObject>(jsonObtained);
removeLoadingAnimation();
return resultObject;
}