遍历
// 直接遍历json数组
var arrayJson = DynamicJson.Parse(@"[1,10,200,300]");
foreach (int item in arrayJson)
{
Console.WriteLine(item); // 1, 10, 200, 300
}
// 直接遍历json对象
var objectJson = DynamicJson.Parse(@"{""foo"":""json"",""bar"":100}");
foreach (KeyValuePair<string, dynamic> item in objectJson)
{
Console.WriteLine(item.Key + ":" + item.Value); // foo:json, bar:100
}
转换和反序列化
public class FooBar
{
public string foo { get; set; }
public int bar { get; set; }
}
var arrayJson = DynamicJson.Parse(@"[1,10,200,300]");
var objectJson = DynamicJson.Parse(@"{""foo"":""json"",""bar"":100}");
// 将json数组转成C#数组
// 方法一:
var array1 = arrayJson.Deserialize<int[]>();
// 方法二
var array2 = (int[])arrayJson;
// 方法三,这种最简单,直接声明接收即可,推荐使用
int[] array3 = arrayJson;
// 将json字符串映射成C#对象
// 方法一:
var foobar1 = objectJson.Deserialize<FooBar>();
// 方法二:
var foobar2 = (FooBar)objectJson;
// 方法三,这种最简单,直接声明接收即可,推荐使用
FooBar foobar3 = objectJson;
// 还可以通过Linq进行操作
var objectJsonList = DynamicJson.Parse(@"[{""bar"":50},{""bar"":100}]");
var barSum = ((FooBar[])objectJsonList).Select(fb => fb.bar).Sum(); // 150
var dynamicWithLinq = ((dynamic[])objectJsonList).Select(d => d.bar);
序列化成json字符串
// 声明一个匿名对象
var obj = new
{
Name = "Foo",
Age = 30,
Address = new
{
Country = "Japan",
City = "Tokyo"
},
Like = new[] { "Microsoft", "Xbox" }
};
// 序列化
// {"Name":"Foo","Age":30,"Address":{"Country":"Japan","City":"Tokyo"},"Like":["Microsoft","Xbox"]}
var jsonStringFromObj = DynamicJson.Serialize(obj);
// 还支持直接序列化数组,集合
// [{"foo":"fooooo!","bar":1000},{"foo":"orz","bar":10}]
var foobar = new FooBar[] {
new FooBar { foo = "fooooo!", bar = 1000 },
new FooBar { foo = "orz", bar = 10 }
};
// 序列化
var jsonFoobar = DynamicJson.Serialize(foobar);
其他(冲突问题,编译不通过问题)










