Tag: deserialization

使用JSON填充现有对象

我使用Json.Net填充类,如下所示: var account = JsonConvert.DeserializeObject(result.ToString()); 上面的结果JSON字符串填充了我的Account类中的几个属性。 我后来有一个新的JSON字符串,并希望用剩余的属性填充相同的Account类。 这可能使用JSON.NET或JsonConvert方法吗? 我基本上想要添加/添加到我在上面的代码行中填充的帐户对象。 我的课: public class Account { public string CID { get; set; } public string jsonrpc { get; set; } public string id { get; set; } public List mail { get; set; } public List uid { get; set; } public List userPassword { get; set; […]

如何反序列化不同类型的集合?

我有一个看起来像这样的JSON提要(我删除了一些这个例子不需要的字段): { “total_count”: 2, “num_pages”: 1, “current_page”: 1, “balance”: { “amount”: “0.00001199”, “currency”: “BTC” }, “transactions”: [ { “transaction”: { “id”: “5018f833f8182b129c00002f”, “created_at”: “2012-08-01T02:34:43-07:00”, “sender”: { “id”: “5011f33df8182b142400000e”, “name”: “User Two”, “email”: “user2@example.com” }, “recipient”: { “id”: “5011f33df8182b142400000a”, “name”: “User One”, “email”: “user1@example.com” } } }, { “transaction”: { “id”: “5018f833f8182b129c00002e”, “created_at”: “2012-08-01T02:36:43-07:00”, “hsh”: “9d6a7d1112c3db9de5315b421a5153d71413f5f752aff75bf504b77df4e646a3”, […]

json newtonsoft:反序列化包含字符串列表的Object

我对这个json有以下问题: { “EVTS”: { “EVT”: [ { “ID”: “123456”, “KEY1” : “somekey”, “CATEG”: [ “cat1”, “cat2”, “cat3” ] } ]} } 这个c#类: public class myClass{ public string ID { get; set; } public string KEY1 { get; set; } public list CATEG { get; set; } } public class ESObject1 { [JsonProperty(“EVT”)] public List EVT […]

复制对象属性:reflection或序列化 – 哪个更快?

我有两个相同类型的对象,需要将属性值从一个对象复制到另一个对象。 有两种选择: 使用reflection,浏览第一个对象的属性并复制值。 序列化第一个对象并反序列化副本。 两者都符合我的要求,问题是我在速度(成本)方面更好地使用哪些? 例 class Person { public int ID { get; set; } public string Firsthand { get; set; } public string LastName { get; set; } public int Age { get; set; } public decimal Weight { get; set; } } 需要将属性值从Person p1复制到Person p2 。 对于这个简单的样本 – 哪种方法更快? 更新 对于序列化,我使用此处建议的ObjectCopier: 深度克隆对象 […]

Json.NET反序列化其他类型中的元组不起作用?

使用Json.net,反序列化包含Tuple的类型不起作用(序列化工作,但反序列化不起作用): [TestMethod] public void Test() { var orig = new TupleHolder(“what????”, true); var json = JsonConvert.SerializeObject(orig); Assert.AreEqual(“{\”Tup\”:{\”Item1\”:\”what????\”,\”Item2\”:true}}”, json); // great! serialization works like a charm! now let’s test deserialization: var dupl = JsonConvert.DeserializeObject(json); Assert.AreEqual(“ZZZ”, dupl.Tup.Item1); // pass! but it should be “what????”… what???? Assert.AreEqual(false, dupl.Tup.Item2); // pass! but it should be “true”, right??? Assert.AreEqual(orig.Tup.Item1, dupl.Tup.Item1); […]

JSON.NET:如何根据父(持有者)对象值反序列化接口属性?

我有这样的课程 class Holder { public int ObjType { get; set; } public List Objects { get; set; } } abstract class Base { // … doesn’t matter } class DerivedType1 : Base { // … doesn’t matter } class DerivedType2 : Base { // … doesn’t matter } 使用WebAPI我想要接收对象Holder并正确反序列化它。 基于ObjType值,我需要将Objects属性反序列化为List ( ObjType == 1 )或List […]

如何将json属性反序列化为类属性?

我的JSON文件 [ { “amount”:”1000000.0″, “check_number”:1, “payment_number”:5, “attachments”:[ { “id”:5324, “url”:”http://www.example.com/”, “filename”:”january_receipt_copy.jpg” } ] } ] 我的class级档案 public class Attachment { public int id { get; set; } public string url { get; set; } public string filename { get; set; } } public class AccountDetail { public string amount { get; set; } public int […]

在将JSON解析为JToken时如何将所有键更改为小写

我有一个JSON字符串,键有大写和小写字符: {“employees”:[ {“FIrstName”:”John”, “LASTname”:”Doe”}, {“FIRSTNAME”:”Anna”, “LaSTNaME”:”Smith”}, {“firstName”:”Peter”, “lastName”:”Jones”} ]} 我想将它转换为JToken对象,并将JToken所有键都JToken为小写。 所以JToken内部应该如下: {“employees”:[ {“firstname”:”John”, “lastname”:”Doe”}, {“firstname”:”Anna”, “lastname”:”Smith”}, {“firstname”:”Peter”, “lastname”:”Jones”} ]} 以前我用的是JToken json = JToken.Parse(jsonString); 转换,但我不知道如何使键小写。 有任何想法吗? 我需要这样做的原因是我的JsonSchemavalidation将不区分大小写。

如何将程序集对象序列化/反序列化为字节数组

假设通过编译代码字符串在内存中创建(可执行)程序集。 然后我想将此程序集对象序列化为字节数组,然后将其存储在数据库中。 然后,我想从数据库中检索字节数组,并将字节数组反序列化为一个程序集对象,然后调用程序集的入口点。 起初我只是尝试像.net中的任何其他简单对象那样执行此序列化,但显然这不适用于程序集对象。 程序集对象包含一个名为GetObjectData的方法,该方法获取重新实例化程序集所需的序列化数据。 所以我有点困惑的是我如何将这一切拼凑起来用于我的场景。 答案只需要展示如何获取程序集对象,将其转换为字节数组,将其转换回程序集,然后在反序列化程序集上执行entry方法。

Json.Net在列表反序列化期间调用属性getter,导致重复项

我正在使用json.net来实现winform应用程序的memento模式 。 我正在使用memento在失败的数据库事务上回滚对象。 我得到的问题是,当反序列化纪念品时,调用getter而不是setter。 让我来certificate一下: class MyClass { public int ID { get; set; } public string field1 { get; set; } public string field2 { get; set; } private List _someObjects; public List SomeObjects { get { if(_someObjects == null) { _someObjects = LoadSomeObjectsFromDB(); } return _someObjects; } set { _someObjects = value; } […]