Json操作庫DynamicJson使用指南

2022-09-26 05:24:09 字數 3903 閱讀 2059

json的簡介

json(j**ascript object notation) 是一種輕量級的資料交換格式。它基於ecmascript的乙個子集。 json採用完全獨立於語言的文字格式,但是也使用了類似於c語言家族的習慣(包括c、c++、c#、j**a、j**ascript、perl、python等)。這些特性使json成為理想的資料交換語言。 易於人閱讀和編寫,同時也易於機器解析和生成(一般用於提公升網路傳輸速率)。

json的優點

傳統操作json

很多.net開發程式設計師或多或少都會遇到操作json字串的情況,一般來說,我們都是先定義乙個和json格式相匹配的類,然後將json字串反序列化成物件,這樣便於我們程式設計使用,由於.net是強型別語言,json又是多變的,非常靈活的,導致伺服器端定義的json序列化類越來越多,操作也及其不便。特別是對多層巢狀的json更是頭疼。此次不再過多宣告,.net程式設計師用過都明白。

簡易操作json

dynamicjson是專門為.net程式設計師開發的json操作庫,其原始碼非常簡單,僅僅只有400行**,乙個對應的class類,目前只支援.net 4.0以上的.net framework。

如何在專案中使用dynamicjson

直接通過nuget安裝

pm > install-package dynamicjson

**dynamicjson.dll,然後在專案中新增引用,**位址如下:

讀取、獲取

// 將json字串解析成dynamicjson物件

var json = dynamicjson.parse(@" }");

var r1 = json.foo; // "json" - string型別

var r2 = json.bar; // 100 - double型別

var r3 = json.nest.foobar; // true - bool型別

var r4 = json["nest"]["foobar"]; // 還可以和j**ascript一樣通過索引器獲取

判斷,新增,更新,刪除,替換,還可以輸出新的json字串

// 將json字串解析成dynamicjson物件

var json = dynamicjson.parse(@" }");

// 判斷json字串中是否包含指定鍵

var b1_1 = json.isdefined("foo"); // true

var b2_1 = json.isdefined("foooo"); // false

// 上面的判斷還可以更簡單,直接通過json.鍵()就可以判斷

var b1_2 = json.foo(); // true

var b2_2 = json.foooo(); // false;

// 新增操作

json.arr = new string ; // 新增乙個js陣列

json.obj1 = new ; // 新增乙個js物件

json.obj2 = new ; // 初始化乙個匿名物件並新增到json字串中

// 刪除操作

json.delete("foo");

json.arr.delete(0);

// 還可以更簡單去刪除,直接通過json(鍵); 即可刪除。

json("bar");

json.arr(1);

// 替換操作

json.obj1 = 5000;

程式設計客棧 // 建立乙個新的jsonobject

dynamic newjson = new dynamicjson();

newjson.str = "aaa";

newjson.obj = new ;

// 直接序列化輸出json字串

var jsonstring = newjson.tostring(); // }

遍歷// 直接遍歷json陣列

var arrayjson = dynamicjson.parse(@"[1,10,200,300]");

foreach (int item in arrayjson)

// 直接遍歷json物件

var objectjson = dynamicjson.parse(@程式設計客棧"");

foreach (keyvaluepair item in objectjson)

轉換和反序列化

public class foobar

public int bar

}var arrayjson = dynamicjson.parse(@"[1,10,200,300]");

var objectjson = dynamicjson.parse(@"");

// 將json陣列轉成c#陣列

// 方法一:

var array1 = arrayjson.deserialize();

// 方法二

var array2 = (int)arrayjson;

// 方法三,這種最簡單,直接宣告接收即可,推薦使用

int array3 = arrayjson;

// 將json字串對映成c#物件

// 方法一:

var foobar1 = objectjson.deserialize();

// 方法二:

var foobar2 = (foobar)objectjson;

// 方法三,這種最簡單,直接宣告接收即可,推薦使用

foobar foobar3 = objectjson;

// 還可以通過linq進行操作

var objectjsonlist = dynamicjson.parse(@"[,]");

var barsum = ((foobar)objectjsonlist).select(fb => fb.bar).sum(); // 150

var dynamicwithlinq = ((dynamic)objectjsonlist).select(d => d.bar);

序列化成json字串

// 宣告乙個匿名物件

var obj = new

,like = new

}程式設計客棧;

// 序列化

// ,"like":["microsoft","xbox"]}

var jsonstringfrom程式設計客棧obj = dynamicjson.serialize(obj);

// 還支援直接序列化陣列,集合

// [,]

var foobar = new foobar ,

new foobar

};// 序列化

var jsonfoobar = dynamicjson.serialize(foobar);

其他(衝突問題,編譯不通過問題)

var nestjson = dynamicjson.parse(@"");

nestjson.nest(); // 判斷是否存在nest屬性

nestjson.nest("a"); // 刪除nest屬性中的a屬性

// 處理json中的鍵和c#的型別衝突導致編譯失敗,或語法提示錯誤,只需要在前面加@字首即可

var json = dynamicjson.parse(@"");

var r1 = json.@int; // 10.0

var r2 = json.@event; // null

例子一:twitterapi

static void main()

}例子二:twitterapi2

static void main(string args)

}看到這裡,是不是覺得很爽,趕快讓你的專案整合dynamicjson吧。

本文標題: json操作庫dynamicjson使用指南

本文位址: /ruanjian/csharp/163155.html

JSON庫解析json檔案

cocoa 下json開源的類庫有很多,其中jsonkit庫是非常簡單易用而且效率又比較高的。解析 舉例 import jsonkit.h 假設 strjson 是網路上接收到的 json 字串,nsstring strjson bage 3,sound def.nsdictionary resul...

JSON常見操作

1.json 字串 json.stringify json 看如下 let json let tostr json.stringify json console.log tostr 返回結果如下 2.字串 json json.parse str 看如下 let str let tojson json...

JSON陣列操作

我們首先定義乙個json陣列物件如下 var persons 一.根據物件屬性值得到相應物件 1.獲取 name 等於 lily 的物件 var lily persons.filter p console.log lily 列印結果 注 filter 方法返回的是乙個陣列 var twins per...