telerik software academy databases

31
Processing JSON in .NET Telerik Software Academy http://academy.telerik.com Databases

Upload: shonda-welch

Post on 17-Jan-2018

240 views

Category:

Documents


0 download

DESCRIPTION

What is JSON?

TRANSCRIPT

Page 1: Telerik Software Academy  Databases

Processing JSON in .NET

Telerik Software Academyhttp://academy.telerik.com

Databases

Page 2: Telerik Software Academy  Databases

Table of Contents

The JSON data format Rules and features Usage

JSON.NET Overview Installation and usage LINQ-to-JSON JSON to XML and XML to JSON

Page 3: Telerik Software Academy  Databases

The JSON Data FormatWhat is JSON?

Page 4: Telerik Software Academy  Databases

The JSON Data Format

JSON (JavaScript Object Notation) is a lightweight data format Human and machine-readable Based on the way of creating

objects in JS Platform independent – can be used

with any programming language

Page 5: Telerik Software Academy  Databases

JSON Rules The JSON data format follows the rules of object creation in JavaScript Strings, numbers and Booleans are

valid JSON"this is string and is valid JSON"

Arrays are valid JSON[5, 'string', true]

Objects are valid JSON{ "firstname": "Doncho", "lastname": "Minkov", "occupation": "Technical trainer"}

Page 6: Telerik Software Academy  Databases

JSON Rules The JSON data format follows the rules of object creation in JavaScript Strings, numbers and Booleans are

valid JSON"this is string and is valid JSON"

Arrays are valid JSON[5, 'string', true]

Objects are valid JSON{ "firstname": "Doncho", "lastname": "Minkov", "occupation": "Technical trainer"}

The double quotes for the

keys are mandatory

Page 7: Telerik Software Academy  Databases

Processing JSON in .NETHow to parse JSON in .NET?

Page 8: Telerik Software Academy  Databases

Built-in JSON Serializers .NET has built-in JSON serializer:

The JavaScriptSerializer class, contained in System.Web.Extensions assembly

JavaScriptSerializer is able to parse C# object to JSON string and vice versa:var place = new Place(…);var serializer = new JavaScriptSerializer();

var jsonPlace = serializer.Serialize(place);var objPlace = serializer.Deserialize<place>(jsonPlace);

Page 9: Telerik Software Academy  Databases

JavaScript SerializerLive Demo

Page 10: Telerik Software Academy  Databases

JavaScriptSerializer Features

JavaScript serializer has nice features: Serializing objects to JSON and vice

versa Correct parsing of dictionaries:digits = new Dictionary<string, int> { { "one", 1}, { "two", 2}, … };

Page 11: Telerik Software Academy  Databases

JavaScriptSerializer Features

JavaScript serializer has nice features: Serializing objects to JSON and vice

versa Correct parsing of dictionaries:digits = new Dictionary<string, int> { { "one", 1}, { "two", 2}, … };

{ "one": 1, "two": 2, "three": 3, "four": 4,…}

Is parsed to

Page 12: Telerik Software Academy  Databases

JavaScriptSerializer Features

JavaScript serializer has nice features: Serializing objects to JSON and vice

versa Correct parsing of dictionaries:digits = new Dictionary<string, int> { { "one", 1}, { "two", 2}, … };

{ "one": 1, "two": 2, "three": 3, "four": 4,…}

Is parsed to

Page 13: Telerik Software Academy  Databases

JavaScript Serializer Features

Live Demo

Page 14: Telerik Software Academy  Databases

JSON.NETBetter JSON parsing than with

JavaScriptSerializer

Page 15: Telerik Software Academy  Databases

JSON.NET

JavaScriptSerializer is good But JSON.NET is better

JSON.NET: Has better performance Supports LINQ-to-JSON Has an out-of-the-box support for

parsing between JSON and XML

Page 16: Telerik Software Academy  Databases

Installing JSON.NET To install JSON.NET, run in the Package Manager Console:$ Install-Package Newtonsoft.Json

Has two primary methods: Serialize an object:

var serializedPlace = JsonConvert.SerializeObject(place);

var deserializedPlace = JsonConvert.DeserializeObject<Place>(serializedPlace);

Deserialize an object:

Page 17: Telerik Software Academy  Databases

Serializing and Deserializing Objects

Live Demo

Page 18: Telerik Software Academy  Databases

JSON.NET Features JSON.NET can be configured to:

Indent the output JSON string To convert JSON to anonymous

types To control the casing and properties

to parse To skip errors

JSON.NET also supports: LINQ-to-JSON Direct parse between XML and JSON

Page 19: Telerik Software Academy  Databases

var json = @"{ 'firstName': 'Doncho'," 'lastName': 'Minkov', 'occupation': 'Technical Trainer' }";var template = new { FirstName = "", Lastname = "", Occupation = ""};var person = JsonConvert.DeserializeAnonymousType(json, template);

Configuring JSON.NET To indent the output string use Formattingg.Indented:JsonConvert.SerializeObject(place, Formatting.Indented);

Deserializing to anonymous types:

Page 20: Telerik Software Academy  Databases

var json = @"{ 'firstName': 'Doncho'," 'lastName': 'Minkov', 'occupation': 'Technical Trainer' }";var template = new { FirstName = "", Lastname = "", Occupation = ""};var person = JsonConvert.DeserializeAnonymousType(json, template);

Should providea template

Should provide a template

Configuring JSON.NET To indent the output string use Formattingg.Indented:JsonConvert.SerializeObject(place, Formatting.Indented);

Deserializing to anonymous types:

Page 21: Telerik Software Academy  Databases

Configuring JSON.NETLive Demo

Page 22: Telerik Software Academy  Databases

JSON.NET Parsing of Objects

By default JSON.NET takes each Property/Field from the public interface of a class and parses it This can be controlled using

attributes:public class User{ [JsonProperty("user")] public string Username{get;set;} [JsonIgnore] public string Password{get;set;}}

Page 23: Telerik Software Academy  Databases

JSON.NET Parsing of Objects

By default JSON.NET takes each Property/Field from the public interface of a class and parses it This can be controlled using

attributes:public class User{ [JsonProperty("user")] public string Username{get;set;} [JsonIgnore] public string Password{get;set;}}

Tells the converter to parse "Username"

to "user"

Page 24: Telerik Software Academy  Databases

JSON.NET Parsing of Objects

By default JSON.NET takes each Property/Field from the public interface of a class and parses it as is This can be controlled using

attributes:public class User{ [JsonProperty("user")] public string Username{get;set;} [JsonIgnore] public string Password{get;set;}}

Tells the converter to skip the property

"Password"

Tells the converter to parse "Username"

to "user"

Page 25: Telerik Software Academy  Databases

JSON.NET Parsing of Objects

Live Demo

Page 26: Telerik Software Academy  Databases

LINQ-to-JSON

JSON.NET has a support for LINQ-to-JSONvar jsonObj = JObject.Parse(json);Console.WriteLine("Places in {0}:", jsonObj["name"]);

jsonObj["places"].Select( pl => string.Format("{0}) {1} ({2})", index++, pl["name"], string.Join(", ", pl["categories"].Select( cat => cat["name"])))) .Print();

Page 27: Telerik Software Academy  Databases

LINQ-to-JSONLive Demo

Page 28: Telerik Software Academy  Databases

XML to JSON and JSON to XML

Page 29: Telerik Software Academy  Databases

XML to JSON and JSON to XML

Conversions from JSON to XML are done using two methods: XML to JSON

string jsonFromXml = JsonConvert.SerializeXNode(doc);

XDocument xmlFromJson = JsonConvert.DeserializeXNode(json);

JSON to XML

Page 30: Telerik Software Academy  Databases

XML to JSON and JSON to XML

Live Demo

Page 31: Telerik Software Academy  Databases

форум програмиране, форум уеб дизайнкурсове и уроци по програмиране, уеб дизайн – безплатно

програмиране за деца – безплатни курсове и уроцибезплатен SEO курс - оптимизация за търсачки

уроци по уеб дизайн, HTML, CSS, JavaScript, Photoshop

уроци по програмиране и уеб дизайн за ученициASP.NET MVC курс – HTML, SQL, C#, .NET, ASP.NET MVC

безплатен курс "Разработка на софтуер в cloud среда"

BG Coder - онлайн състезателна система - online judge

курсове и уроци по програмиране, книги – безплатно от Наков

безплатен курс "Качествен програмен код"

алго академия – състезателно програмиране, състезанияASP.NET курс - уеб програмиране, бази данни, C#, .NET, ASP.NET

курсове и уроци по програмиране – Телерик академия

курс мобилни приложения с iPhone, Android, WP7, PhoneGapfree C# book, безплатна книга C#, книга Java, книга C# Дончо Минков - сайт за програмиране

Николай Костов - блог за програмиранеC# курс, програмиране, безплатно

?? ? ?

??? ?

?

? ?

??

?

?

? ?

Questions?

?

Processing JSON in .NET

http://academy.telerik.com