【问题标题】:Getting error using JsonConvert.DeserializeObject when converting JSON to string c#将 JSON 转换为字符串 c# 时使用 JsonConvert.DeserializeObject 出错
【发布时间】:2019-01-03 12:21:37
【问题描述】:

将 JSON 转换为字符串(第二种方法)时,我收到错误:

Newtonsoft.Json.JsonReaderException: '解析值时遇到意外字符: [.路径'',第 1 行,位置 1。'

为什么我在第二种方法中遇到错误,但代码在第一种方法中运行良好,是否有针对第二种方法的任何解决方案,因为我只能使用该方法?

代码:

static void Main(string[] args)
{
   string abc = "[{\"provider\":\"test\",\"schemes\":[{\"tyo\":\"1\",\"check\":\"99\",\"slotNumber\":\"0\"},{\"tyo\":\"2\",\"check\":\"99\",\"slotNumber\":\"469\"}]}]";

   var value = abc.FromJson().ToString();

   // Getting error in below line
   var value2 = abc.FromJson(typeof(String));       
}     

// First Method                    
public static object FromJson(this string json)
{
   var value = JsonConvert.DeserializeObject(json);
   return value;
}

// Second Method
public static object FromJson(this string json, Type type)
{
   var value = JsonConvert.DeserializeObject(json, type);     
   return value;
}                    

【问题讨论】:

  • 点击here!检查我猜这是你的问题。
  • 我不明白您为什么要尝试将 Json 反序列化为字符串,因为它已经是字符串了!你想做什么?
  • 您的问题具有误导性。您声称您在“第二种方法”中遇到错误,但您的 cmets 将其标记为“第一种方法”。你只是在调试中被自己的 cmets 弄糊涂了吗?
  • 该示例只是一个示例控制台应用程序。我正在做的是我正在尝试使用第二种方法将示例 json abc 转换为字符串,这会引发错误,因为我的字符串包含反斜杠。
  • 您的扩展方法毫无意义。他们真正在做的只是让你的代码更难阅读

标签: c# json.net


【解决方案1】:

JsonConvert.DeserializeObject(string, Type) 尝试将 JSON 解析为给定类型,将对象的属性分配给结果类型的属性。由于 String 不提供必要的属性(在您的情况下,它可能需要是一个包含提供 providerschemes 等属性的对象的数组)它不能反序列化为字符串。

这是因为 Newtonsoft.Json 支持对对象数组的反序列化:

var value2 = abc.FromJson(typeof(object[]));

【讨论】:

    猜你喜欢
    • 2017-06-11
    • 2012-07-29
    • 2021-03-19
    • 1970-01-01
    • 2021-03-30
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多