c#搜索属性并在newtonsoft json.net中返回其价值



i不能将数据序列化为c#对象,因为同一集对象的JSON结构不相同。是否有某种功能可以让您搜索所有JSON属性及其子属性,以返回您搜索的属性的值?

我通过API收到的数据的示例(我正在尝试返回属性" property amlookingfor"的价值(:

第一个示例

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "propertyIamLookingFor": 500,
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    }
}} 

第二个示例

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "alignment": "center"
    },
    "propertyIamLookingFor": 32
}}

第三个示例

{"widget": {
    "debug": "on",
    "window": {
        "title": "Sample Konfabulator Widget",
        "name": "main_window",
        "height": 500
    },
    "image": { 
        "src": "Images/Sun.png",
        "name": "sun1",
        "hOffset": 250,
        "vOffset": 250,
        "window": {
            "title": "Sample Konfabulator Widget",
            "name": "main_window",
            "height": 500,
            "propertyIamLookingFor": 11
        }
    }
}} 

请注意,该属性的名称总是相同的,因此我知道属性的名称,并且我正在尝试返回该值。

*如果有人想知道,这是我正在访问的不良API,但别无选择。

您可以为此使用JSONPATH,类似于XPATH。

例如,查找所有称为myProp的属性,请使用JSONPATH表达式

$..myProp

这是一个递归选择器,它将迭代所有属性和儿童道具等。

JSONPATH内置在JSON.NET库中

再次查看http://newtonsoft.com/json/help/html/queryjsonselecttokenjsonpath.htm,但更深入:(

我没有设法在json.net中找到一个函数来查找属性(无论json结构中的位置如何(并返回其值,但是xmldocument.getElements.getElementsBytaGname与xml效果很好。因此,我只是将JSON转换为jsonconvert.deserializexmlnode,然后使用xmldocument.getElementsbytagname查找我的属性。希望它能帮助其他所有人解决同一问题,并希望其他人发布一种实现这一目标的更简单的方法。

编辑: Charleh设法指出了JSON的道路,被接受为最佳答案

相关内容

  • 没有找到相关文章

最新更新