[C#, JSON] Пояснение основ

https://dotnetfiddle.net/Ihy0nt

почему для itemName достачно указать 4 узла, а для inN надо 6? Хотя они но одном уровне.

Разве

j["730"]["2"]["18505270901"]["name"]

не значит: берем объект J =>узел “730” =>узел “2” =>узел “18505270901” =>узел “name”

а

j["730"].FirstOrDefault().FirstOrDefault().FirstOrDefault().FirstOrDefault()["market_name"]

берем объект J =>узел “730” =>ПервыйДочернийУзелЕслиЕсть =>ПервыйДочернийУзелЕслиЕсть=>ПервыйДочернийУзелЕслиЕсть=>ПервыйДочернийУзелЕслиЕсть=>узел “market_name”

public static void Main()
	{
		string sampleJSON = @"{ " +
  "\"730\": {"+
    "\"2\": {"+
      "\"18505270901\": {"+
        "\"currency\": 0,"+
        "\"appid\": 730,"+
        "\"contextid\": \"2\","+
  		"\"id\": \"18505270901\","+
        "\"descriptions\": ["+
          "{"+
            "\"type\": \"html\","+
            "\"value\": \"Exterior: Minimal Wear\""+
          "},"+
          "{"+
            "\"type\": \"html\","+
            "\"value\": \" \""+
         " },"+
        "],"+
        "\"name\": \"AWP | Corticera\","+
        "\"type\": \"Classified Sniper Rifle\","+
        "\"market_name\": \"AWP | Corticera (Minimal Wear)\""+
		"},"+
	"}"+
"}}";
		JObject j = JObject.Parse(sampleJSON);
		string itemName = (string)j["730"]["2"]["18505270901"]["name"];
        string inN = (string)(j["730"].FirstOrDefault().FirstOrDefault().FirstOrDefault().FirstOrDefault()["market_name"]);
		
		Console.WriteLine("1: {0} \n2: {1}",itemName, inN);

Тут не в данных дело, а в том как JSON .NET организован.

Между объектами там еще свойство тоже представлено отдельным объектом.

Console.WriteLine(j["730"].GetType());
Console.WriteLine(j["730"].FirstOrDefault().GetType());
Console.WriteLine(j["730"].FirstOrDefault().FirstOrDefault().GetType());
Newtonsoft.Json.Linq.JObject
Newtonsoft.Json.Linq.JProperty
Newtonsoft.Json.Linq.JObject