Skip to content

Commit 873111b

Browse files
authored
System.Text.Json - NRT for .NET 6 samples (dotnet#26732)
1 parent 9137a69 commit 873111b

File tree

12 files changed

+45
-61
lines changed

12 files changed

+45
-61
lines changed

docs/standard/serialization/snippets/system-text-json-how-to-6-0/csharp/Callbacks.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Text.Json;
1+
using System.Text.Json;
32
using System.Text.Json.Serialization;
43

54
namespace Callbacks
@@ -10,7 +9,7 @@ public class WeatherForecast :
109
{
1110
public DateTime Date { get; set; }
1211
public int TemperatureCelsius { get; set; }
13-
public string Summary { get; set; }
12+
public string? Summary { get; set; }
1413

1514
void IJsonOnDeserializing.OnDeserializing() => Console.WriteLine("\nBegin deserializing");
1615
void IJsonOnDeserialized.OnDeserialized()
@@ -48,9 +47,9 @@ public static void Main()
4847
Console.WriteLine(jsonString);
4948

5049
weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(jsonString);
51-
Console.WriteLine($"Date={weatherForecast.Date}");
52-
Console.WriteLine($"TemperatureCelsius={weatherForecast.TemperatureCelsius}");
53-
Console.WriteLine($"Summary={weatherForecast.Summary}");
50+
Console.WriteLine($"Date={weatherForecast?.Date}");
51+
Console.WriteLine($"TemperatureCelsius={weatherForecast?.TemperatureCelsius}");
52+
Console.WriteLine($"Summary={weatherForecast?.Summary}");
5453
}
5554
}
5655
}

docs/standard/serialization/snippets/system-text-json-how-to-6-0/csharp/Program.cs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
1-
using System;
2-
using System.IO;
3-
using System.Text;
4-
using System.Threading.Tasks;
5-
6-
namespace SystemTextJsonSamples
1+
namespace SystemTextJsonSamples
72
{
83
public class Program
94
{
10-
static async Task Main()
5+
static void Main()
116
{
127
Console.WriteLine("\n============================= Round trip to JsonElementAndNode\n");
138
RoundtripJsonElementAndNode.Program.Main();

docs/standard/serialization/snippets/system-text-json-how-to-6-0/csharp/PropertyOrder.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Text.Json;
1+
using System.Text.Json;
32
using System.Text.Json.Serialization;
43

54
namespace PropertyOrder
@@ -12,7 +11,7 @@ public class WeatherForecast
1211
[JsonPropertyOrder(-2)]
1312
public int TemperatureF { get; set; }
1413
[JsonPropertyOrder(5)]
15-
public string Summary { get; set; }
14+
public string? Summary { get; set; }
1615
[JsonPropertyOrder(2)]
1716
public int WindSpeed { get; set; }
1817
}

docs/standard/serialization/snippets/system-text-json-how-to-6-0/csharp/RoundtripJsonElementAndNode.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
1-
using System;
2-
using System.Text.Json;
1+
using System.Text.Json;
32
using System.Text.Json.Nodes;
43

54
namespace RoundtripJsonElementAndNode
@@ -8,9 +7,9 @@ public class WeatherForecast
87
{
98
public DateTimeOffset Date { get; set; }
109
public int TemperatureCelsius { get; set; }
11-
public string Summary { get; set; }
10+
public string? Summary { get; set; }
1211
public JsonElement DatesAvailable { get; set; }
13-
public JsonNode SummaryWords { get; set; }
12+
public JsonNode? SummaryWords { get; set; }
1413
}
1514
public class Program
1615
{
@@ -31,7 +30,7 @@ public static void Main()
3130
""Humid""
3231
]
3332
}";
34-
WeatherForecast weatherForecast =
33+
WeatherForecast? weatherForecast =
3534
JsonSerializer.Deserialize<WeatherForecast>(jsonString);
3635

3736
var serializeOptions = new JsonSerializerOptions { WriteIndented = true };

docs/standard/serialization/snippets/system-text-json-how-to-6-0/csharp/SerializeIgnoreCycles.cs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Text.Json;
1+
using System.Text.Json;
42
using System.Text.Json.Serialization;
53

64
namespace SerializeIgnoreCycles
75
{
86
public class Employee
97
{
10-
public string Name { get; set; }
11-
public Employee Manager { get; set; }
12-
public List<Employee> DirectReports { get; set; }
8+
public string? Name { get; set; }
9+
public Employee? Manager { get; set; }
10+
public List<Employee>? DirectReports { get; set; }
1311
}
1412

1513
public class Program
@@ -38,13 +36,13 @@ public static void Main()
3836
string tylerJson = JsonSerializer.Serialize(tyler, options);
3937
Console.WriteLine($"Tyler serialized:\n{tylerJson}");
4038

41-
Employee tylerDeserialized =
39+
Employee? tylerDeserialized =
4240
JsonSerializer.Deserialize<Employee>(tylerJson, options);
4341

4442
Console.WriteLine(
4543
"Tyler is manager of Tyler's first direct report: ");
4644
Console.WriteLine(
47-
tylerDeserialized.DirectReports[0].Manager == tylerDeserialized);
45+
tylerDeserialized?.DirectReports?[0]?.Manager == tylerDeserialized);
4846
}
4947
}
5048
}

docs/standard/serialization/snippets/system-text-json-how-to-6-0/csharp/SystemTextJsonSamples.csproj

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
<OutputType>Exe</OutputType>
55
<TargetFramework>net6.0</TargetFramework>
66
<StartupObject>SystemTextJsonSamples.Program</StartupObject>
7+
<ImplicitUsings>enable</ImplicitUsings>
8+
<Nullable>enable</Nullable>
79
</PropertyGroup>
810

911
</Project>

docs/standard/serialization/snippets/system-text-json-source-generation/csharp/BothModesNoOptions.cs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
// <All>
2-
using System;
3-
using System.IO;
4-
using System.Text;
52
using System.Text.Json;
63
using System.Text.Json.Serialization;
74

@@ -12,7 +9,7 @@ public class WeatherForecast
129
{
1310
public DateTime Date { get; set; }
1411
public int TemperatureCelsius { get; set; }
15-
public string Summary { get; set; }
12+
public string? Summary { get; set; }
1613
}
1714
// </WF>
1815

@@ -35,27 +32,28 @@ public static void Main()
3532
""Summary"": ""Hot""
3633
}
3734
";
38-
WeatherForecast weatherForecast;
35+
WeatherForecast? weatherForecast;
3936

4037
// <DeserializeWithTypeInfo>
4138
weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(
4239
jsonString, SourceGenerationContext.Default.WeatherForecast);
4340
// </DeserializeWithTypeInfo>
44-
Console.WriteLine($"Date={weatherForecast.Date}");
41+
Console.WriteLine($"Date={weatherForecast?.Date}");
4542
// output:
4643
//Date=8/1/2019 12:00:00 AM
4744

4845
// <DeserializeWithContext>
49-
weatherForecast = (WeatherForecast)JsonSerializer.Deserialize(
50-
jsonString, typeof(WeatherForecast), SourceGenerationContext.Default);
46+
weatherForecast = JsonSerializer.Deserialize(
47+
jsonString, typeof(WeatherForecast), SourceGenerationContext.Default)
48+
as WeatherForecast;
5149
// </DeserializeWithContext>
52-
Console.WriteLine($"Date={weatherForecast.Date}");
50+
Console.WriteLine($"Date={weatherForecast?.Date}");
5351
// output:
5452
//Date=8/1/2019 12:00:00 AM
5553

5654
// <SerializeWithTypeInfo>
5755
jsonString = JsonSerializer.Serialize(
58-
weatherForecast, SourceGenerationContext.Default.WeatherForecast);
56+
weatherForecast!, SourceGenerationContext.Default.WeatherForecast);
5957
// </SerializeWithTypeInfo>
6058
Console.WriteLine(jsonString);
6159
// output:

docs/standard/serialization/snippets/system-text-json-source-generation/csharp/JsonSerializerOptionsExample.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// <All>
2-
using System;
32
using System.Text.Json;
43
using System.Text.Json.Serialization;
54

@@ -9,7 +8,7 @@ public class WeatherForecast
98
{
109
public DateTime Date { get; set; }
1110
public int TemperatureCelsius { get; set; }
12-
public string Summary { get; set; }
11+
public string? Summary { get; set; }
1312
}
1413

1514
// <DefineContext>
@@ -30,16 +29,17 @@ public static void Main()
3029
""summary"": ""Hot""
3130
}
3231
";
33-
WeatherForecast weatherForecast;
32+
WeatherForecast? weatherForecast;
3433

3534
// <Deserialize>
36-
weatherForecast = (WeatherForecast)JsonSerializer.Deserialize(
35+
weatherForecast = JsonSerializer.Deserialize(
3736
jsonString,
3837
typeof(WeatherForecast),
3938
new OptionsExampleContext(
40-
new JsonSerializerOptions(JsonSerializerDefaults.Web)));
39+
new JsonSerializerOptions(JsonSerializerDefaults.Web)))
40+
as WeatherForecast;
4141
// </Deserialize>
42-
Console.WriteLine($"Date={weatherForecast.Date}");
42+
Console.WriteLine($"Date={weatherForecast?.Date}");
4343
// output:
4444
//Date=8/1/2019 12:00:00 AM
4545

docs/standard/serialization/snippets/system-text-json-source-generation/csharp/MetadataOnlyNoOptions.cs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// <All>
2-
using System;
32
using System.Text.Json;
43
using System.Text.Json.Serialization;
54

@@ -9,7 +8,7 @@ public class WeatherForecast
98
{
109
public DateTime Date { get; set; }
1110
public int TemperatureCelsius { get; set; }
12-
public string Summary { get; set; }
11+
public string? Summary { get; set; }
1312
}
1413

1514
// <JsonSerializableGenMode>
@@ -38,21 +37,21 @@ public static void Main()
3837
""Summary"": ""Hot""
3938
}
4039
";
41-
WeatherForecast weatherForecast;
40+
WeatherForecast? weatherForecast;
4241

4342
// Deserialize with context that selects metadata mode only for WeatherForecast only.
4443
// <DeserializeWFContext>
4544
weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(
4645
jsonString, MetadataOnlyWeatherForecastOnlyContext.Default.WeatherForecast);
4746
// </DeserializeWFContext>
48-
Console.WriteLine($"Date={weatherForecast.Date}");
47+
Console.WriteLine($"Date={weatherForecast?.Date}");
4948
// output:
5049
//Date=8/1/2019 12:00:00 AM
5150

5251
// Serialize with context that selects metadata mode only for WeatherForecast only.
5352
// <SerializeWFContext>
5453
jsonString = JsonSerializer.Serialize(
55-
weatherForecast,
54+
weatherForecast!,
5655
MetadataOnlyWeatherForecastOnlyContext.Default.WeatherForecast);
5756
// </SerializeWFContext>
5857
Console.WriteLine(jsonString);
@@ -64,14 +63,14 @@ public static void Main()
6463
weatherForecast = JsonSerializer.Deserialize<WeatherForecast>(
6564
jsonString, MetadataOnlyContext.Default.WeatherForecast);
6665
// </DeserializeMetadataOnlyContext>
67-
Console.WriteLine($"Date={weatherForecast.Date}");
66+
Console.WriteLine($"Date={weatherForecast?.Date}");
6867
// output:
6968
//Date=8/1/2019 12:00:00 AM
7069

7170
// Serialize with context that selects metadata mode only.
7271
// <SerializeMetadataOnlyContext>
7372
jsonString = JsonSerializer.Serialize(
74-
weatherForecast, MetadataOnlyContext.Default.WeatherForecast);
73+
weatherForecast!, MetadataOnlyContext.Default.WeatherForecast);
7574
// </SerializeMetadataOnlyContext>
7675
Console.WriteLine(jsonString);
7776
// output:

docs/standard/serialization/snippets/system-text-json-source-generation/csharp/SerializeOnlyNoOptions.cs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
11
// <All>
2-
using System;
3-
using System.IO;
4-
using System.Text;
52
using System.Text.Json;
63
using System.Text.Json.Serialization;
74

@@ -11,7 +8,7 @@ public class WeatherForecast
118
{
129
public DateTime Date { get; set; }
1310
public int TemperatureCelsius { get; set; }
14-
public string Summary { get; set; }
11+
public string? Summary { get; set; }
1512
}
1613

1714
// <JsonSourceGenerationOptionsGenmode>

0 commit comments

Comments
 (0)