如何反序列化json对象?

时间:2016-08-10 17:05:53

标签: c# json serialization

我知道通常使用方法AppDomain。但是在这种情况下,我进行序列化,然后进行反序列化,但不起作用。

Newtonsoft.Json.JsonConvert.DeserializeObject

我收到以下异常:将值“57ab57ba86597bac513ce130”转换为类型MongoDB.Bson.ObjectId'时出错。路径'a',第1行,第31位。“

我知道问题是类型,但是如何序列化类型却无法反序列化呢?

测试结构:

static public void mess(test message)
{
  try
  {
    test temp = new test(id); // The only thing I don't show is that I obtain a valid ObjectId in id
    string messageSerialized = Newtonsoft.Json.JsonConvert.SerializeObject(temp);
    Newtonsoft.Json.JsonConvert.DeserializeObject<test>(messageSerialized);
  }
  catch (Exception e)
  {
    Console.WriteLine(e.Message);
  }
}

1 个答案:

答案 0 :(得分:0)

  

将值“此处为对象ID”转换为键入时出错   MongoDB.Bson.ObjectId”。

是的,查看错误,可以看到它正在尝试将字符串"here is an object ID"反序列化为Bson.ObjectId,这将永远不会成功。您应该发布序列化的JSON字符串以及BrowsersObj的结构。

根据您的最新编辑:"57ab57ba86597bac513ce130"不是MongoDB ObjectId而是字符串。检查您的MongoDB集合,很可能您没有将_id存储为ObjectID,而是将其覆盖以存储为string