我从webrequest获取了一个JSON编码的字符串。
字符串像这样回来了
"{\"key\":\"value\"}"
当我尝试用JsonConvert中的DeserializeObject
解析时,我得到了
Unexpected character encountered while parsing value: {. Path '', line 1, position 1.
到目前为止我使用的代码看起来像这样
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(address));
req.ContentType = "application/json; charset=utf-8";
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
string response;
using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
{
string stream = sr.ReadToEnd().Replace("\n", "");
stream = stream.Replace("\\", "");
response = JsonConvert.DeserializeObject<string>(stream);
}
显然replace("\\", "")
没有做到这一点,我真的不想这样做,因为它是一种将字符串转换为我需要的不洁方式。如何摆脱字符串中的\
?
答案 0 :(得分:1)
stream
字符串包含一个JSON对象,您尝试将其反序列化为字符串(...DeserializeObject< string >(stream)
),因此异常。因此,您未获得&#34; JSON编码的字符串&#34;,您正在获取&#34; JSON编码的对象& #34;
您需要在response
中确定您想要的内容:
response
设置为stream
。JsonConvert.DeserializeObject<RootClass>()
。或者,您可以考虑使用JsonConvert.DeserializeAnonymousType()
。如果它应该包含从该JSON定义中提取的某些值,"LINQ to JSON"可能会非常有用:
response = (string)JObject.Parse(stream)["key"];