Processing JSON in.NET JSON, JSON.NET LINQ-to-JSON and JSON to XML SoftUni Team Technical Trainers Software University

Slides:



Advertisements
Similar presentations
Software Quality Assurance QA Engineering, Testing, Bug Tracking, Test Automation Software University Technical Trainers SoftUni Team.
Advertisements

 Dimitar Ivanov Introduction to programming with microcontrollers.
C# Advanced Topics Methods, Classes and Objects SoftUni Team Technical Trainers Software University
AngularJS Routing Routes, Route Parameters, Templates, Location, Navigation SoftUni Team Technical Trainers Software University
Using MongoDB with.NET Welcome to the JSON-stores world SoftUni Team Technical Trainers Software University
AngularJS Services Built-in and Custom Services SoftUni Team Technical Trainers Software University
Software University Curriculum, Courses, Exams, Jobs SoftUni Team Technical Trainers Software University
PHP Basics Course Introduction SoftUni Team Technical Trainers Software University
Fundamentals SoftUni Welcome to Software University SoftUni Team Technical Trainers Software University
Advanced JavaScript Course Introduction SoftUni Team Technical Trainers Software University
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC SoftUni Team Technical Trainers Software University
AngularJS Directives Defining Custom Directives SoftUni Team Technical Trainers Software University
Software Testing Lifecycle Exit Criteria Evaluation, Continuous Integration Ivan Yonkov Technical Trainer Software University.
High-Quality Programming Code Code Correctness, Readability, Maintainability, Testability, Etc. SoftUni Team Technical Trainers Software University
NoSQL Databases NoSQL Concepts SoftUni Team Technical Trainers Software University
Redis Key-Value Database: Practical Introduction
Consuming REST Services from C# SoftUni Team Technical Trainers Software University
Start Your Own Blog Angel Georgiev Part-time Trainer angeru.softuni-friends.org Software University The Culture of Knowledge Sharing.
Entity Framework Performance SoftUni Team Technical Trainers Software University
Svetlin Nakov Technical Trainer Software University
Build Processes and Continuous Integration Automating Build Processes Software University Technical Trainers SoftUni Team.
Processing Redis with.NET How to Operate with Redis Databases SoftUni Team Technical Trainers Software University
Multidimensional Arrays, Sets, Dictionaries Processing Matrices, Multidimensional Arrays, Dictionaries, Sets SoftUni Team Technical Trainers Software University.
Project Tracking Tools Trello, Asana, Basecamp, GitHub Issue Tracker, TRAC Angel Georgiev Part-time Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding SoftUni Team Technical Trainers Software University
Templating, Routing, lodash Extending functionality using Collections SoftUni Team Technical Trainers Software University
Controllers and Markup Controllers, $scope, Markup, Directives, Expressions, Binding, Filters, Validation SoftUni Team Technical Trainers Software University.
AMD and RequireJS Splitting JavaScript Code into Dependent Modules Software University Technical Trainers SoftUni Team.
Using SQL Connecting, Retrieving Data, Executing SQL Commands, … Svetlin Nakov Technical Trainer Software University
Asynchronous Web Services Writing Asynchronous Web Services SoftUni Team Technical Trainers Software University
Jekyll Static Site Generator Template-Based Site Generation Svetlin Nakov Technical Trainer Software University
Forms Overview, Query string, Submitting arrays, PHP & HTML, Input types, Redirecting the user Mario Peshev Technical Trainer Software.
Web Development Tools Tools for Front-End Developers Writing HTML and CSS Code SoftUni Team Technical Trainers Software University
ASP.NET SignalR SoftUni Team Technical Trainers Software University
Responsive Design Design that Adapts to Different Devices SoftUni Team Technical Trainers Software University
Tables, Rows, Columns, Cells, Header, Footer, Colspan, Rowspan
Associative Arrays and Objects Associative Arrays, Objects Svetlin Nakov Technical Trainer Software University
Telerik Software Academy Databases.
CSS Transitions and Animations Animated HTML Elements SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
Design Patterns: Structural Design Patterns General and reusable solutions to common problems in software design Software University
Advanced C# Course Introduction SoftUni Team Technical Trainers Software University
Prototype Chain and Inheritance Prototype chain, Inheritance, Accessing Base Members Software University Technical Trainers SoftUni Team.
Events Event Handling in JavaScript SoftUni Team Technical Trainers Software University
Object-Oriented Programming Course Introduction Svetlin Nakov Technical Trainer Software University
JavaScript Applications Course Introduction SoftUni Team Technical Trainers Software University
Mocking with Moq Tools for Easier Unit Testing SoftUni Team Technical Trainers Software University
Mocking with Moq Mocking tools for easier unit testing Svetlin Nakov Technical Trainer Software University
JavaScript Tools Tools for Writing / Editing / Debugging JavaScript Code Svetlin Nakov Technical Trainer Software University
Test-Driven Development Learn the "Test First" Approach to Coding Svetlin Nakov Technical Trainer Software University
Sets, Dictionaries SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
High-Quality Code: Course Introduction Course Introduction SoftUni Team Technical Trainers Software University
PHP Basics Course Introduction Svetlin Nakov Technical Trainer Software University
Functional Programming Data Aggregation and Nested Queries Ivan Yonkov Technical Trainer Software University
Programming Fundamentals Course Introduction SoftUni Team Technical Trainers Software University
Doctrine The PHP ORM SoftUni Team Technical Trainers Software University
Creating Content Defining Topic, Creating Technical Training Materials SoftUni Team Technical Trainers Software University
Web Storage and Cookies Cookies, Local and Session Storage SoftUni Team Technical Trainers Software University
Inheritance Class Hierarchies SoftUni Team Technical Trainers Software University
Stacks and Queues Processing Sequences of Elements SoftUni Team Technical Trainers Software University
Generics SoftUni Team Technical Trainers Software University
Auto Mapping Objects SoftUni Team Database Applications
Introduction to MVC SoftUni Team Introduction to MVC
Mocking tools for easier unit testing
Parsing JSON JSON.NET, LINQ-to-JSON
Entity Framework: Code First
Extending functionality using Collections
Exporting and Importing Data
Exporting and Importing Data
Presentation transcript:

Processing JSON in.NET JSON, JSON.NET LINQ-to-JSON and JSON to XML SoftUni Team Technical Trainers Software University

2 1.The JSON data format  Rules and Features  Usage 2.JSON.NET Overview  Installation and Usage  LINQ-to-JSON  JSON to XML and XML to JSON Table of Contents

The JSON Data Format What is JSON?

 JSON (JavaScript Object Notation) is a lightweight data format  Human and machine-readable  Based on the way to create objects in JavaScript  Independent of development platforms and languages  JSON data consists of:  Values (strings, numbers, etc.)  Key-value pairs: { key : value }  Arrays: [value1, value2, … } The JSON Data Format

 The JSON data format follows the rules of object creation in JS  Strings, numbers and Booleans are valid JSON:  Arrays are valid JSON:  Objects are valid JSON (key-value pairs): JSON Data Format "this is string and is valid JSON" [5, 'string', true] { "firstName": "Vladimir", "lastName": "Georgiev", "firstName": "Vladimir", "lastName": "Georgiev", "jobTitle": "Technical Trainer", age: 25 "jobTitle": "Technical Trainer", age: 25} 3.14true

Processing JSON in.NET How to Parse JSON in C# and.NET Framework?

.NET has built-in JSON serializer:  The JavaScriptSerializer class  Contained in System.Web.Extensions assembly  JavaScriptSerializer can parse from object to JSON string and vice versa: Built-in JSON Serializers var place = new Place(…); var serializer = new JavaScriptSerializer(); var jsonPlace = serializer.Serialize(place); var objPlace = serializer.Deserialize (jsonPlace);

JavaScript Serializer Live Demo

 The.NET JavaScript serializer is powerful:  Serialize objects to JSON and vice versa  Serialize / deserialize dictionaries correctly: JavaScriptSerializer Features var digits = new Dictionary var digits = new Dictionary { { "one", 1 }, { "one", 1 }, { "two", 2 }, { "two", 2 },}; var serializer = new JavaScriptSerializer(); string json = serializer.Serialize(digits); var d = serializer.Deserialize >(json);

 JavaScript serializer has nice features:  Serializing objects to JSON and vice versa  Correct parsing of dictionaries: JavaScriptSerializer Features var digits = new Dictionary var digits = new Dictionary { { "one", 1}, { "one", 1}, { "two", 2}, { "two", 2}, … }; };{ "one": 1, "two": 2, "one": 1, "two": 2, …} Is parsed to

JavaScript Serializer Features Live Demo

JSON.NET Better JSON Parsing for.NET Developers

 JavaScriptSerializer is good  But JSON.NET is better  JSON.NET:  Has better performance  Supports LINQ-to-JSON  Out-of-the-box support for parsing between JSON and XML  Open-source project: JSON.NET

 To install JSON.NET run in the NuGet Package Manager Console:  Has two primary methods:  Serialize an object:  Deserialize an object: Installing JSON.NET $ Install-Package Newtonsoft.Json var serializedPlace = JsonConvert.SerializeObject(place); var deserializedPlace = JsonConvert.DeserializeObject (serializedPlace); JsonConvert.DeserializeObject (serializedPlace);

Serializing and Deserializing Objects Live Demo

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

Configuring JSON.NET

var json 'firstName': 'Vladimir', 'lastName': 'Georgiev', 'jobTitle': 'Technical Trainer' }"; 'lastName': 'Georgiev', 'jobTitle': 'Technical Trainer' }"; var template = new { FirstName = string.Empty, FirstName = string.Empty, LastName = string.Empty, LastName = string.Empty, Occupation = string.Empty Occupation = string.Empty}; var person = JsonConvert.DeserializeAnonymousType(json, template);  To indent the output string use Formatting.Indented :  Deserializing to anonymous types: Configuring JSON.NET JsonConvert.SerializeObject(place, Formatting.Indented); Should provide a template

Configuring JSON.NET Live Demo

JSON.NET Object Parsing

 By default JSON.NET takes each property / field from the public interface of a class and parses it  This can be controlled using attributes: JSON.NET Parsing of Objects public class User { [JsonProperty("user")] [JsonProperty("user")] public string Username { get; set; } public string Username { get; set; } [JsonIgnore] [JsonIgnore] public string Password { get; set; } public string Password { get; set; }} Parse Username to user Skip the property

JSON.NET Object Parsing Live Demo

LINQ-to-JSON Using LINQ to JSON with JSON.NET

 JSON.NET supports LINQ-to-JSON: LINQ-to-JSON var jsonObj = JObject.Parse(json); Console.WriteLine("Places in {0}:", jsonObj["name"]); jsonObj["places"].Select(pl => string.Format("{0}) {1} ({2})",.Select(pl => string.Format("{0}) {1} ({2})", index++, index++, pl["name"], pl["name"], string.Join(", ", pl["categories"] string.Join(", ", pl["categories"].Select(cat => cat["name"])))).Select(cat => cat["name"])))).Print();.Print();

LINQ-to-JSON Live Demo

XML to JSON and JSON to XML

 Conversions from JSON to XML are done using two methods:  XML to JSON  JSON to XML XML to JSON and JSON to XML string jsonFromXml = JsonConvert.SerializeXNode(doc); JsonConvert.SerializeXNode(doc); XDocument xmlFromJson = JsonConvert.DeserializeXNode(json); JsonConvert.DeserializeXNode(json);

XML to JSON and JSON to XML Live Demo

? ? ? ? ? ? ? ? ? Processing JSON in.NET

License  This course (slides, examples, demos, videos, homework, etc.) is licensed under the "Creative Commons Attribution- NonCommercial-ShareAlike 4.0 International" licenseCreative Commons Attribution- NonCommercial-ShareAlike 4.0 International 31  Attribution: this work may contain portions from  "Databases" course by Telerik Academy under CC-BY-NC-SA licenseDatabasesCC-BY-NC-SA

Free Software University  Software University Foundation – softuni.orgsoftuni.org  Software University – High-Quality Education, Profession and Job for Software Developers  softuni.bg softuni.bg  Software Facebook  facebook.com/SoftwareUniversity facebook.com/SoftwareUniversity  Software YouTube  youtube.com/SoftwareUniversity youtube.com/SoftwareUniversity  Software University Forums – forum.softuni.bgforum.softuni.bg