175 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C#
		
	
	
	
		
		
			
		
	
	
			175 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C#
		
	
	
	
|  | using System; | |||
|  | using UnityEngine; | |||
|  | using UnityEngine.UI; | |||
|  | using System.Collections.Generic; | |||
|  | using Newtonsoft.Json; | |||
|  | using Newtonsoft.Json.Linq; | |||
|  | 
 | |||
|  | public class JsonNetSample : MonoBehaviour | |||
|  | { | |||
|  |     public Text Output; | |||
|  | 
 | |||
|  |     void Start() | |||
|  |     { | |||
|  |         Output.text = "Start!\n\n"; | |||
|  | 
 | |||
|  |         TestJson(); | |||
|  |         SerailizeJson(); | |||
|  |         DeserializeJson(); | |||
|  |         LinqToJson(); | |||
|  |         JsonPath(); | |||
|  | 
 | |||
|  |         WriteLine("\nDone!"); | |||
|  |     } | |||
|  | 
 | |||
|  |     void WriteLine(string msg) | |||
|  |     { | |||
|  |         Output.text = Output.text + msg + "\n"; | |||
|  |     } | |||
|  | 
 | |||
|  |     public class Product | |||
|  |     { | |||
|  |         public string Name; | |||
|  |         public DateTime ExpiryDate = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc); | |||
|  |         public decimal Price; | |||
|  |         public string[] Sizes; | |||
|  | 
 | |||
|  |         public override bool Equals(object obj) | |||
|  |         { | |||
|  |             if (obj is Product) | |||
|  |             { | |||
|  |                 Product p = (Product)obj; | |||
|  | 
 | |||
|  |                 return (p.Name == Name && p.ExpiryDate == ExpiryDate && p.Price == Price); | |||
|  |             } | |||
|  | 
 | |||
|  |             return base.Equals(obj); | |||
|  |         } | |||
|  | 
 | |||
|  |         public override int GetHashCode() | |||
|  |         { | |||
|  |             return (Name ?? string.Empty).GetHashCode(); | |||
|  |         } | |||
|  |     } | |||
|  | 
 | |||
|  |     [System.Serializable] | |||
|  |     public class CharacterListItem | |||
|  |     { | |||
|  |         public int Id { get; set; } | |||
|  |         public string Name { get; set; } | |||
|  |         public int Level { get; set; } | |||
|  |         public string Class { get; set; } | |||
|  |         public string Sex { get; set; } | |||
|  |     } | |||
|  | 
 | |||
|  |     void TestJson() | |||
|  |     { | |||
|  |         WriteLine("* TestJson"); | |||
|  |         var json = "{\"Id\":51, \"Name\":\"padre\", \"Level\":0, \"Class\":\"Vampire\", \"Sex\":\"F\"}"; | |||
|  |         var c = JsonConvert.DeserializeObject<CharacterListItem>(json); | |||
|  |         WriteLine(c.Id + " " + c.Name); | |||
|  |     } | |||
|  | 
 | |||
|  |     void SerailizeJson() | |||
|  |     { | |||
|  |         WriteLine("* SerailizeJson"); | |||
|  | 
 | |||
|  |         Product product = new Product(); | |||
|  |         product.Name = "Apple"; | |||
|  |         product.ExpiryDate = new DateTime(2008, 12, 28); | |||
|  |         product.Sizes = new string[] { "Small" }; | |||
|  | 
 | |||
|  |         string json = JsonConvert.SerializeObject(product); | |||
|  |         WriteLine(json); | |||
|  |     } | |||
|  | 
 | |||
|  |     public class Movie | |||
|  |     { | |||
|  |         public string Name { get; set; } | |||
|  |         public string Description { get; set; } | |||
|  |         public string Classification { get; set; } | |||
|  |         public string Studio { get; set; } | |||
|  |         public DateTime? ReleaseDate { get; set; } | |||
|  |         public List<string> ReleaseCountries { get; set; } | |||
|  |     } | |||
|  | 
 | |||
|  |     void DeserializeJson() | |||
|  |     { | |||
|  |         WriteLine("* DeserializeJson"); | |||
|  | 
 | |||
|  |         string json = @"{
 | |||
|  |           'Name': 'Bad Boys', | |||
|  |           'ReleaseDate': '1995-4-7T00:00:00', | |||
|  |           'Genres': [ | |||
|  |             'Action', | |||
|  |             'Comedy' | |||
|  |           ] | |||
|  |         }";
 | |||
|  | 
 | |||
|  |         Movie m = JsonConvert.DeserializeObject<Movie>(json); | |||
|  | 
 | |||
|  |         string name = m.Name; | |||
|  |         WriteLine(name); | |||
|  |     } | |||
|  | 
 | |||
|  |     void LinqToJson() | |||
|  |     { | |||
|  |         WriteLine("* LinqToJson"); | |||
|  | 
 | |||
|  |         JArray array = new JArray(); | |||
|  |         array.Add("Manual text"); | |||
|  |         array.Add(new DateTime(2000, 5, 23)); | |||
|  | 
 | |||
|  |         JObject o = new JObject(); | |||
|  |         o["MyArray"] = array; | |||
|  | 
 | |||
|  |         string json = o.ToString(); | |||
|  |         WriteLine(json); | |||
|  |     } | |||
|  | 
 | |||
|  |     private void JsonPath() | |||
|  |     { | |||
|  |         WriteLine("* JsonPath"); | |||
|  | 
 | |||
|  |         var o = JObject.Parse(@"{
 | |||
|  |             'Stores': [ | |||
|  |             'Lambton Quay', | |||
|  |             'Willis Street' | |||
|  |             ], | |||
|  |             'Manufacturers': [ | |||
|  |             { | |||
|  |                 'Name': 'Acme Co', | |||
|  |                 'Products': [ | |||
|  |                 { | |||
|  |                     'Name': 'Anvil', | |||
|  |                     'Price': 50 | |||
|  |                 } | |||
|  |                 ] | |||
|  |             }, | |||
|  |             { | |||
|  |                 'Name': 'Contoso', | |||
|  |                 'Products': [ | |||
|  |                 { | |||
|  |                     'Name': 'Elbow Grease', | |||
|  |                     'Price': 99.95 | |||
|  |                 }, | |||
|  |                 { | |||
|  |                     'Name': 'Headlight Fluid', | |||
|  |                     'Price': 4 | |||
|  |                 } | |||
|  |                 ] | |||
|  |             } | |||
|  |             ] | |||
|  |         }");
 | |||
|  | 
 | |||
|  |         JToken acme = o.SelectToken("$.Manufacturers[?(@.Name == 'Acme Co')]"); | |||
|  |         WriteLine(acme.ToString()); | |||
|  | 
 | |||
|  |         IEnumerable<JToken> pricyProducts = o.SelectTokens("$..Products[?(@.Price >= 50)].Name"); | |||
|  |         foreach (var item in pricyProducts) | |||
|  |         { | |||
|  |             WriteLine(item.ToString()); | |||
|  |         } | |||
|  |     } | |||
|  | } |