C#使用LitJson對Json數據解析


官網:(json.org/json-zh.html   <可選中文>)

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。 它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。 JSON采用完全獨立於語言的文本格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數據交換語言。


 

 

1.首先建立一個txt文本文件作為json的媒介:

json中使用[]表示數組結構,使用{}表示對象結構,使用 “鍵”:“值” 這中鍵值對的方式表示屬性及值,各種結構間彼此使用 , 分隔。

[
{"name":"Json","age":20,"skill":"noting"},
{"name":"Haria","age":24,"skill":"jump"},
{"name":"Jsfg","age":42,"skill":"attack"}
]

該結構定義了一個數組,里面包含了三個對象,每個對象下有name,age,skill三個屬性和各自的值。


 

2.這里再定義一個類用來対映json數據中包含的對象:

通過重寫了該類的ToString方法用來輸出類的信息。

 1 class JsonObject
 2     {
 3         public string name { get; set; }
 4         public string skill { get; set; }
 5         public int age { get; set; }
 6         public override string ToString()
 7         {
 8             return string.Format("JsonObject:name:{0},age={1},skill={2}", name, age, skill);
 9         }
10     }

 

3.最后引入LitJson程序集,可以在Json官網下方找到下載,也可以使用vs NuGet來加載到程序中。

這來有詳細的官方引導:lbv.github.io/litjson/docs/quickstart.html

通過JsonMapper.ToObject和JsonMapper.ToJson來實現json和對象之間的轉換,通過JsonData來接收解析的數據,再使用遍歷來取出JsonData中的數據。

 1 class Program
 2     {
 3         
 4         static void Main(string[] args)
 5         {
 6             List<JsonObject> jsonList = new List<JsonObject>();//JsonObject即為上述2中創建的類
 7             JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("JsonFile.txt"));//這里的JsonFile.txt文件即為上面1中的文本文件
 8 
 9             //通過索引的方式獲取json中的信息,既可以使用索引位置,也可以使用索引鍵名
10             foreach (JsonData item in jsonData)
11             {
12                 JsonObject JO = new JsonObject();
13                 int age = int.Parse(item["age"].ToString());
14                 JO.name = item[0].ToString();
15                 JO.skill = item["skill"].ToString();
16                 JO.age = age;
17 
18                 jsonList.Add(JO);
19             }
20 
21             Console.WriteLine("\n通過索引來解析json:");
22             foreach (JsonObject  jo in jsonList)
23             {
24                 Console.WriteLine(jo.ToString());   
25             }
26 
27 
28             //因為這里的json數據為一組對象,所以使用數組和泛型進行存儲解析(json數據必須和類屬性結構對應)
29             JsonObject[] jsonObjectArray= JsonMapper.ToObject<JsonObject[]>(File.ReadAllText("JsonFile.txt"));
30 
31             List<JsonObject> jsonList2 =JsonMapper.ToObject<List<JsonObject>>(File.ReadAllText("JsonFile.txt"));
32 
33             Console.WriteLine("\n使用array數組:");
34 
35             foreach (var item in jsonObjectArray)
36             {
37                 Console.WriteLine(item);
38             }
39 
40             Console.WriteLine("\n使用list集合:");
41 
42             foreach (var item in jsonList2)
43             {
44                 Console.WriteLine(item);
45             }
46 
47 
48             //將對象轉換為json,再將json轉換為對象
49             JsonObject jsonObject = new JsonObject() { name = "哈撒kei", age = 22, skill = "萬佛朝宗" };
50 
51             string json=JsonMapper.ToJson(jsonObject);
52 
53             JsonObject  jonsonObject = JsonMapper.ToObject<JsonObject>(json);
54 
55             Console.WriteLine("\n將對象轉換為json(中文轉換為ASCII碼):" + json);//這里json會將中文轉換為ASCII碼
56             Console.WriteLine("\n將json轉換為對象:" + jonsonObject);
57 
58             Console.ReadKey();
59         }
60     }

如果這些類容幫助到你了,希望您給予支持 o(^▽^)o

當然也可以借助一些數據保存的插件將我們從繁瑣的編碼解脫出來,下面是一款不錯的游戲數據保存加載插件


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM