如何反序列化json对象

本文关键字:对象 json 反序列化 | 更新日期: 2023-09-27 18:01:41

我知道通常使用的方法是Newtonsoft.Json.JsonConvert.DeserializeObject。然而,在这个例子中,我做了一个序列化,然后是一个不工作的反序列化。

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);
  }
}

我得到以下异常:转换值"57ab57ba86597bac513ce130"到类型MongoDB.Bson.ObjectId'的错误。路径'a',行1,位置31。"

我知道问题是类型,但是它怎么能序列化类型却不能反序列化呢?

测试结构:

   public class test
    {
        public MongoDB.Bson.ObjectId a;
        public test(MongoDB.Bson.ObjectId b)
        {
            a = b;
        }
    }

messageSerialized = "{'"a'":'"57ab57ba86597bac513ce130'"}"

如何反序列化json对象

将值"这是一个对象ID"转换为类型时出错MongoDB.Bson.ObjectId"。

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

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