如何反序列化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'"}"
将值"这是一个对象ID"转换为类型时出错MongoDB.Bson.ObjectId"。
是的,看看错误,可以看到它试图将字符串"here is an object ID"
反序列化为Bson.ObjectId
,这将永远不会成功。您应该将序列化的JSON字符串与BrowsersObj
的结构一起发布。
根据你的最新编辑:"57ab57ba86597bac513ce130"
不是一个MongoDB的ObjectId,而它是一个字符串。检查你的MongoDB集合,最有可能的是你没有将_id
存储为ObjectID
,而不是将它们覆盖为string