JSON學習
1.數據在鍵值對中
2.數據有逗號分隔
3.花括號保存對象
4.方括號保存數組
{
"employees": [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName":"Carter" }
]
}
使用JSON時必須要引用Json的庫:litJson
兩種引入JSON的方式
1.JSON官網,下載litJson.dll
2.引用,管理NuGet程序包,搜索litJson
利用JsonMapper解析Json數據
Program.cs
using LitJson2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeJson
{
class Program
{
static void Main(string[] args)
{
List<JsonPractice> jsonInfo = new List<JsonPractice>();
//1.利用JsonMapper解析Json,Json代表一個數組或者對象
JsonData jsonData = JsonMapper.ToObject(File.ReadAllText("JsonText.txt"));//在這裏JsonData代表數組
foreach (JsonData item in jsonData)//在這裏JsonData代表一個對象
{
JsonPractice json = new JsonPractice();
JsonData idValue = item["id"];//通過字符索引器取得鍵對應的值
JsonData danageValue = item["damage"];
JsonData nameValue = item["name"];
json.id = Int32.Parse(idValue.ToString());
json.name = nameValue.ToString();
json.damage = Int32.Parse(danageValue.ToString());
//int id = Int32.Parse(idValue.ToString());
//int damage = Int32.Parse(danageValue.ToString());
//Console.WriteLine("ID:{0},名字:{1},傷害力:{2}",id,nameValue.ToString(),damage);
jsonInfo.Add(json);
}
foreach (var item in jsonInfo)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
JsonText.txt
[
{"id":2,"name":"天下無雙","damage":567},
{"id":3,"name":"咫尺天涯","damage":255},
{"id":4,"name":"如來神掌","damage":356}
]
JsonPractice.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeJson
{
class JsonPractice
{
public int id;
public string name;
public int damage;
public override string ToString()
{
return string.Format("ID:{0},名字:{1},傷害:{2}", id, name, damage);
}
}
}
使用JsonMapper和泛型解析Json的數組
注意:使用泛型解析時,類中的字段名要和json中的鍵名相
Program.cs
using LitJson2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeJson
{
class Program
{
static void Main(string[] args)
{
//1.利用泛型數組解析Json
//JsonPractice[] skillArray = JsonMapper.ToObject<JsonPractice[]>(File.ReadAllText("JsonText.txt"));
//foreach (var item in skillArray)
//{
// Console.WriteLine(item);
//}
//2.利用泛型集合解析Json
List<JsonPractice> skillList = JsonMapper.ToObject<List<JsonPractice>>(File.ReadAllText("JsonText.txt"));
foreach (var item in skillList)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
JsonText.cs同上
JsonPractice.cs同上
使用JsonMapper和泛型解析Json的對象
Program.cs
using LitJson2;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeJson
{
class Program
{
static void Main(string[] args)
{
Player player = JsonMapper.ToObject<Player>(File.ReadAllText("主角.txt"));
Console.WriteLine(player);
foreach (var item in player.SkillList)
{
Console.WriteLine(item);
}
Console.ReadKey();
}
}
}
主角.txt
{
"Name":"zzz",
"Level":99,
"Age":18,
"SkillList":[
{"id":2,"name":"天下無雙","damage":567},
{"id":3,"name":"咫尺天涯","damage":255},
{"id":4,"name":"如來神掌","damage":356}
]
}
Skill.cs負責數組的值
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeJson
{
class Skill
{
public int id;
public string name;
public int damage;
public override string ToString()
{
return string.Format("ID:{0},名字:{1},傷害:{2}", id, name, damage);
}
}
}
Playre.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace PracticeJson
{
class Player
{
public string Name { get; set; }
public int Level { get; set; }
public int Age { get; set; }
public List<Skill> SkillList { get; set; }
public override string ToString()
{
return string.Format("Name:{0},Level:{1},Age:{2},SkillList:{3}", Name, Level, Age,SkillList);
}
}
}
把對象裝換成文本
Player player = new Player();
player.Name = "花千骨";
player.Level = 78;
player.Age = 23;
string s = JsonMapper.ToJson(player);
Console.WriteLine(s);
Console.ReadKey();