2012-01-16 6 views
0

У меня есть следующий JSON, который я хочу проанализировать на C#. Я стараюсь избегать внешних библиотек, но если я должен использовать их. Прямо сейчас я использую метод JavaScriptSerializer для разбора из файла JSON после ответа на другой stackoverflow question К сожалению, у меня может быть любое количество объектов objectX в разделе Ресурсы, и у всех их есть разные имена. Есть ли другой способ сделать это?Parsing JSON file C#

{ 
    "FormatVersion" : "2010-09-09", 
    "Description" : "My JSON Description", 
    "Parameters" : { 
     "Product" : { 
      "Description" : "Product name", 
      "Type" : "String", 
      "Default" : "cs42" 
     }, 
     "DifferentObjectSize" : { 
      "Description" : "DifferentObjectSize", 
      "Type" : "String", 
      "Default" : "large" 
     }, 
     "ObjectSize" : { 
      "Description" : "Worker size", 
      "Type" : "String", 
      "Default" : "medium" 
     } 
    }, 

    "Resources" : { 

     "differentobject" : { 
      "Type" : "MyType", 
      "Properties" : { 
      "InstanceType" : { "Ref" : "DifferentObjectSize" } 
      } 
     }, 

     "object1" : { 
      "Type" : "MyType", 
      "Properties" : { 
      "InstanceType" : { "Ref" : "ObjectSize" } 
      } 
     }, 

     "object2" : { 
      "Type" : "MyType", 
      "Properties" : { 
      "InstanceType" : { "Ref" : "ObjectSize" } 
      } 
     }, 

     "object3" : { 
      "Type" : "MyType", 
      "Properties" : { 
      "InstanceType" : { "Ref" : "ObjectSize" } 
      } 
     }, 

     "object4" : { 
      "Type" : "MyType", 
      "Properties" : { 
      "InstanceType" : { "Ref" : "ObjectSize" } 
      } 
     }, 

    } 
} 
+0

Какую версию .NET вы нацеливание? – Kane

+0

Мы используем .net 4.0 –

+0

Ну, я выкатил свой собственный. JSON не очень сложный, вы, вероятно, можете сделать это через день или около того. –

ответ

4

Если вы думаете использовать Json.Net вы можете разобрать вашу входную строку, как показано ниже

JObject myObj = (JObject)JsonConvert.DeserializeObject(jsonString); 
foreach(var resource in myObj["Resources"]) 
{ 
    var props = resource.Children<JObject>().First(); 
    Console.WriteLine(props["Type"] + " " + props["Properties"]["InstanceType"]["Ref"]); 
}