Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Working with JSON files
📖 Scenario: You are building a simple program to manage a list of books in a library. The data will be saved and loaded using JSON files.
🎯 Goal: Create a C# program that stores book information in a list, converts it to JSON format, and prints the JSON string.
📋 What You'll Learn
Create a list of books with specific properties
Add a configuration variable for JSON formatting
Serialize the list of books to a JSON string
Print the JSON string to the console
💡 Why This Matters
🌍 Real World
Many applications save and load data in JSON format because it is easy to read and write for both humans and computers.
💼 Career
Knowing how to work with JSON files is essential for software developers, especially when building web services, APIs, or data-driven applications.
Progress0 / 4 steps
1
Create the list of books
Create a list called books of type List<Book> and add these exact books: new Book { Title = "The Hobbit", Author = "J.R.R. Tolkien", Year = 1937 } and new Book { Title = "1984", Author = "George Orwell", Year = 1949 }. Also, define the Book class with public properties Title, Author, and Year.
C Sharp (C#)
Hint
Define a class Book with three public properties. Then create a List<Book> and add two Book objects with the exact details.
2
Add JSON serialization options
Add a variable called options of type System.Text.Json.JsonSerializerOptions and set its WriteIndented property to true.
C Sharp (C#)
Hint
Use new JsonSerializerOptions { WriteIndented = true } to create the options variable.
3
Serialize the books list to JSON
Create a string variable called jsonString and assign it the JSON serialization of books using JsonSerializer.Serialize with options.
C Sharp (C#)
Hint
Use JsonSerializer.Serialize(books, options) to convert the list to a JSON string.
4
Print the JSON string
Write a line to print the jsonString variable to the console using Console.WriteLine.
C Sharp (C#)
Hint
Use Console.WriteLine(jsonString); to display the JSON output.
Practice
(1/5)
1. What is the main purpose of using JSON files in C# programming?
easy
A. To store and exchange data in a simple text format
B. To compile C# code faster
C. To create graphical user interfaces
D. To manage database connections
Solution
Step 1: Understand JSON file usage
JSON files store data in a readable text format that can be shared or saved easily.
Step 2: Identify the correct purpose
Among the options, only storing and exchanging data matches JSON's role.
Final Answer:
To store and exchange data in a simple text format -> Option A
Quick Check:
JSON = data storage and exchange [OK]
Hint: JSON files hold data as text for easy sharing [OK]
Common Mistakes:
Thinking JSON compiles code
Confusing JSON with UI design
Assuming JSON manages databases
2. Which of the following is the correct way to read a JSON file content into a string in C#?
easy
A. string json = JsonSerializer.ReadFile("data.json");
B. string json = File.ReadAllText("data.json");
C. string json = File.ReadJson("data.json");
D. string json = JsonConvert.Read("data.json");
Solution
Step 1: Recall file reading method in C#
The method File.ReadAllText reads all text from a file into a string.
Step 2: Check method correctness
Only File.ReadAllText("data.json") is valid syntax to read JSON as string.
Final Answer:
string json = File.ReadAllText("data.json"); -> Option B
Quick Check:
File.ReadAllText reads file content [OK]
Hint: Use File.ReadAllText to read JSON file content [OK]
Common Mistakes:
Using non-existent methods like ReadJson
Confusing JsonSerializer with file reading
Using JsonConvert without importing Newtonsoft
3. Given the following code, what will be the output?
using System.Text.Json;
var json = "{\"Name\":\"Alice\", \"Age\":30}";
var person = JsonSerializer.Deserialize<Person>(json);
Console.WriteLine(person.Name + " is " + person.Age + " years old.");
public class Person {
public string Name { get; set; }
public int Age { get; set; }
}
medium
A. Alice is 30 years old.
B. Name is Alice, Age is 30
C. System.Text.Json.JsonException
D. null is 0 years old.
Solution
Step 1: Deserialize JSON string to Person object
The JsonSerializer converts the JSON string into a Person object with Name = "Alice" and Age = 30.
Step 2: Print the formatted string
The Console.WriteLine outputs "Alice is 30 years old." by accessing person.Name and person.Age.
Hint: Deserialize JSON then access properties for output [OK]
Common Mistakes:
Expecting JSON string printed directly
Confusing property names or types
Ignoring deserialization step
4. What is wrong with this code snippet that tries to write an object to a JSON file?
using System.Text.Json;
using System.IO;
var person = new Person { Name = "Bob", Age = 25 };
File.WriteAllText("person.json", person.ToString());
public class Person {
public string Name { get; set; }
public int Age { get; set; }
}
medium
A. File.WriteAllText cannot write to JSON files
B. Person class must be static to serialize
C. person.ToString() does not convert the object to JSON format
D. Missing using directive for System.IO
Solution
Step 1: Analyze how object is converted to JSON
Calling person.ToString() returns the class name, not JSON text.
Step 2: Identify correct serialization method
Use JsonSerializer.Serialize(person) to convert the object to JSON string before writing.
Final Answer:
person.ToString() does not convert the object to JSON format -> Option C
Quick Check:
To write JSON, serialize object first [OK]
Hint: Use JsonSerializer.Serialize, not ToString(), to get JSON [OK]
Common Mistakes:
Using ToString() instead of serialization
Assuming WriteAllText can't write JSON
Thinking class must be static to serialize
5. You want to read a JSON file containing a list of products and convert it into a List<Product> in C#. Which code snippet correctly accomplishes this?
public class Product {
public string Name { get; set; }
public double Price { get; set; }
}
// JSON file content example: [{"Name":"Pen","Price":1.5},{"Name":"Book","Price":12.99}]
// Which code correctly reads and deserializes the JSON file?
hard
A. var products = JsonSerializer.Deserialize(File.ReadAllText("products.json"));
products = null;
B. var products = JsonSerializer.Deserialize("products.json");
C. var products = JsonSerializer.Deserialize(File.ReadAllLines("products.json"));
D. var json = File.ReadAllText("products.json");
var products = JsonSerializer.Deserialize(json);
Solution
Step 1: Read entire JSON file as string
Use File.ReadAllText to get the JSON content from the file.
Step 2: Deserialize JSON string to List<Product>
Use JsonSerializer.Deserialize(json) to convert JSON text into a list of Product objects.
Final Answer:
var json = File.ReadAllText("products.json");
var products = JsonSerializer.Deserialize(json); -> Option D
Quick Check:
ReadAllText + Deserialize = correct [OK]
Hint: Read file text first, then deserialize to list [OK]