我已经成功地使用JToken和JArray来抓取特定的数据,但我遇到了一个特殊的问题。问题在于从节点'work_unit'中的键/值对中提取值。你可以在这里看到的节点在我JObject:如何从此JSON节点提取这些键/值对?
JObject testString = JObject.Parse("{"
+ "'Roofing': {"
+ "'Buildings': ["
+ "{"
+ "'BuildingId': 4,"
+ "'BuildingName': 'what',"
+ "'work_unit': '{\"RoofingBuildings\":\"1\",\"WindowsBuildings\":\"\",\"GutterBuildings\":\"\",\"InsulationMasterPrice\":\"\",\"SidingBuildings\":\"\"}'"
+ "},"
+ "{"
+ "'BuildingId': 3,"
+ "'BuildingName': 'Home'"
+ "}"
+ "],"
+ "'Windows': ["
+ "{"
+ "'PerimeterDrawings': 56,"
+ "},"
+ "{"
+ "'PerimeterDrawings': 55,"
+ "}"
+ "]"
+ "},"
+ "'Window':"
+ "{"
+ "'poof': 3,"
+ "'stall': 7"
+ "},"
+ "'Products': ["
+ "'Roofing',"
+ "'Pooping',"
+ "],"
+ "'Garage': ["
+ "{"
+ "'roof': 3,"
+ "'wall': 7"
+ "},"
+ "{"
+ "'roof': 3,"
+ "'wall': 7"
+ "}"
+ "]"
+ "}");
我可以得到“work_unit”的整体像这样:
JToken jt= JO.SelectToken("Roofing.Buildings[0].work_unit");
^^ jt will contain:
{{"RoofingBuildings":"1","WindowsBuildings":"","GutterBuildings":"","InsulationMasterPrice":"","SidingBuildings":""}}
我如何得到“1” RoofingBuildings?我已经尝试了几种方法,下面是一些方法,但它们最终只能为空。
string foo1 = (string)JTNewTest.SelectToken(".RoofingBuildings");
string foo2 = (string)JO.SelectToken("Roofing.Buildings[0].work_unit[0].RoofingBuildings");
在此先感谢,我找不到我的确切情况,由于某种原因,其他任何在线的例子:/
最简单的方法是创建结构相同的类,然后将JSON反序列化为类类型。然后你就像正常使用C#属性和枚举,LINQ等一样访问它。 – ps2goat
无关联: 可以使用多行字符串来摆脱每行的附加操作,使代码更具可读性和高效性。 –
你有没有在使用JToken和JArray时特别有趣?因为有更简单的方法来解决你的反序列化问题... –