一、JSON序列化扩展数据
1.先创建一个Invoice对象,然后定义一个decimal类型的属性.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace JSONDemo
{
public class Invoice
{
public float HourlyRate { get; set; }
public float Hours { get; set; }
public decimal TaxRate { get; set; }
}
}
2.序列化与反序列化对,在序列化时,重新设置对象属性值.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using GongHuiNewtonsoft.Json;
using GongHuiNewtonsoft.Json.Serialization;
using GongHuiNewtonsoft.Json.Converters;
using System.Collections.Specialized;
namespace JSONDemo
{
class Program
{
static void Main(string[] args)
{
string json = @"{
'HourlyRate':150,
'Hours':40,
'TaxRate':0.25
}";
Console.WriteLine("---------反序列化-----------------");
Invoice invoice = JsonConvert.DeserializeObject<Invoice>(json);
Console.WriteLine(invoice.HourlyRate);
Console.WriteLine(invoice.Hours);
Console.WriteLine(invoice.TaxRate);
invoice.TaxRate = 0.20m;
Console.WriteLine("-----------序列化-----------------");
string json1 = JsonConvert.SerializeObject(invoice);
Console.WriteLine(json1);
}
}
}
3.运行的结果
二、JSON反序列化扩展数据
1.创建一个对象Invoice,然后引用System.Runtime.Serialization.定义一个IDictionary属性,并在构造函数中实例化。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using GongHuiNewtonsoft.Json;
using GongHuiNewtonsoft.Json.Linq;
using GongHuiNewtonsoft.Json.Serialization;
using System.Runtime.Serialization;
namespace JSONDemo
{
public class Invoice
{
public float HourlyRate { get; set; }
public float Hours { get; set; }
public decimal TaxRate { get; set; }
public string IntegerPart { get; set; }
public string DecimalsPart { get; set; }
[JsonExtensionData]
private IDictionary<string, JToken> _hoursList;
[OnDeserialized]
private void OnDeserialized(StreamingContext context)
{
string s = (string)_hoursList["Part"];
IntegerPart = s.Split('.')[0];
DecimalsPart = s.Split('.')[1];
}
public Invoice()
{
_hoursList = new Dictionary<string, JToken>();
}
}
}
2. 反序列化对象Invoice,注意:在反序列化时,其属性值是IDictionary中的键值。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using GongHuiNewtonsoft.Json;
using GongHuiNewtonsoft.Json.Serialization;
using GongHuiNewtonsoft.Json.Converters;
using System.Collections.Specialized;
namespace JSONDemo
{
class Program
{
static void Main(string[] args)
{
string json = @"{
'HourlyRate':150,
'Hours':40,
'TaxRate':0.25,
'Part':3.34
}";
Invoice invoice = JsonConvert.DeserializeObject<Invoice>(json);
Console.WriteLine(invoice.IntegerPart);
Console.WriteLine(invoice.DecimalsPart);
}
}
}
3.运行结果是
JSON源代码下载地址:http://download.youkuaiyun.com/detail/lovegonghui/9342751