gpt4 book ai didi

c# - JsonConvert.DeserializeObject 由于意外字符而失败

转载 作者:太空宇宙 更新时间:2023-11-03 12:28:22 24 4
gpt4 key购买 nike

我从网络请求中获取一个 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("\\", "") 不能解决问题,我真的不想这样做,因为这是一种不干净的字符串转换方式到我需要的。如何去掉字符串中的 \

最佳答案

stream string 包含一个 JSON 对象,您正试图将其反序列化为字符串 ( ...DeserializeObject< string >(stream) ),因此出现异常。所以你得到的不是“JSON 编码的字符串”,而是“JSON 编码的对象”。

你需要决定你想要在 response 中拥有什么:

  • 如果是一些需要进一步处理的 JSON,只需设置 responsestream .
  • 如果它应该包含一个对象层次结构,定义必要的类并使用JsonConvert.DeserializeObject<RootClass>() .或者,您可以考虑使用 JsonConvert.DeserializeAnonymousType() .
  • 如果它应该包含从 JSON 定义中提取的一些值,"LINQ to JSON"可能会很有帮助:

    response = (string)JObject.Parse(stream)["key"];

关于c# - JsonConvert.DeserializeObject 由于意外字符而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43740286/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com