I begin c# and Deserialize Json. In my training I studied Newtonsoft, but I would like to do the same with system.text.json
With this json, I want to select
- searchedProducts > featuredProduct AND
- searchedProducts > productDetails
To make a object list.
https://api.nvidia.partners/edge/product/search?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203090,RTX%203080%20Ti,RTX%203080,RTX%203070%20Ti,RTX%203070,RTX%203060%20Ti,RTX%203060&gpu_filter=RTX%203090~12,RTX%203080%20Ti~7,RTX%203080~16,RTX%203070%20Ti~3,RTX%203070~18,RTX%203060%20Ti~8,RTX%203060~2,RTX%202080%20SUPER~1,RTX%202080~0,RTX%202070%20SUPER~0,RTX%202070~0,RTX%202060~6,GTX%201660%20Ti~0,GTX%201660%20SUPER~9,GTX%201660~8,GTX%201650%20Ti~0,GTX%201650%20SUPER~3,GTX%201650~17
Class
public class CarteGraphique
{
public string displayName { get; set; }
public string prdStatus { get; set; }
public List<Retailer> retailers { get; set; }
}
With Newtonsoft, I do the following:
Newtonsoft
JObject jsonParse = JObject.Parse(json);
IList<CarteGraphique> products = new List<CarteGraphique>();
IList<JToken> productDetailsParse = jsonParse["searchedProducts"]["productDetails"]
.Children()
.Where(n => n["isFounderEdition"].Value<bool>() == true)
.ToList();
var featuredProductParse = jsonParse["searchedProducts"]["featuredProduct"];
foreach (JToken item in productDetailsParse)
{
CarteGraphique result = item.ToObject<CarteGraphique>();
products.Add(result);
}
var featuredProduct = featuredProductParse.ToObject<CarteGraphique>();
products.Add(featuredProduct);
foreach (var item in products)
{
Console.WriteLine(item.DisplayName);
}
I want to do that with System.Text.Json...but I don't know how select json part "productDetails" for add this in a object list.
System.text.json
var listGpu = new List<CarteGraphique>();
var jsonParse = JsonDocument.Parse(json);
var jsonFilter = jsonParse.RootElement
.GetProperty("searchedProducts")
.GetProperty("featuredProduct")
.GetRawText();
var jsonObj = JsonSerializer.Deserialize<CarteGraphique>(jsonFilter);
listGpu.Add(jsonObj);
foreach (var item in listGpu)
{
Console.WriteLine(item.displayName);
}
Can you help me please? Documentation is not clear for the beginner that i am.