【问题标题】:Complex json parsing复杂的json解析
【发布时间】:2016-01-30 13:31:04
【问题描述】:

我有以下非常复杂的 JSON 字符串。我只需要从每个节点中选择几个项目,例如列表、成本和不可用。但我不知道如何获取我想要的每个元素。我正在使用JSON.NET.

Json 内容:

{
  "parts": [
    {
      "1_0": {
        "added2cartStatus": 0,
        "unavailable": true,
        "originalQty": 0,
        "buyQty": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        },
        "nd": [
          {
            "100": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star PalmSpring",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "101": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Indio",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "102": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Metro SB",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "103": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Banning",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "108": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Yucaipa",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "109": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Redlands",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "111": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Riverside",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "112": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Blomington",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "113": {
              "price": {
                "list": "$80.58",
                "cost": "$52.65"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Chino",
              "deliveryDelay": "",
              "available": 0
            }
          }
        ],
        "perCarQty": 0,
        "uofm": {
          "100": "EA",
          "101": "EA",
          "102": "EA",
          "103": "EA",
          "108": "EA",
          "109": "EA",
          "111": "EA",
          "112": "EA",
          "113": "EA"
        },
        "sortRequired": false,
        "minQty": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        },
        "costToggleState": 0,
        "updatePartStatus": false,
        "buyInc": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        }
      }
    },
    {
      "2_0": {
        "added2cartStatus": 0,
        "unavailable": false,
        "originalQty": 0,
        "buyQty": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        },
        "nd": [
          {
            "100": {
              "selected": true,
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star PalmSpring",
              "deliveryDelay": "",
              "available": 1
            }
          },
          {
            "101": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Indio",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "102": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Metro SB",
              "deliveryDelay": "",
              "available": 2
            }
          },
          {
            "103": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Banning",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "108": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Yucaipa",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "109": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Redlands",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "111": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Riverside",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "112": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Blomington",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "113": {
              "price": {
                "list": "$20.22",
                "cost": "$9.23"
              },
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Chino",
              "deliveryDelay": "",
              "available": 0
            }
          }
        ],
        "perCarQty": 0,
        "uofm": {
          "100": "EA",
          "101": "EA",
          "102": "EA",
          "103": "EA",
          "108": "EA",
          "109": "EA",
          "111": "EA",
          "112": "EA",
          "113": "EA"
        },
        "sortRequired": true,
        "minQty": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        },
        "costToggleState": 0,
        "updatePartStatus": false,
        "buyInc": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        }
      }
    },
    {
      "3_0": {
        "added2cartStatus": 0,
        "unavailable": true,
        "originalQty": 0,
        "buyQty": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        },
        "nd": [
          {
            "100": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star PalmSpring",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "101": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Indio",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "102": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Metro SB",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "103": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Banning",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "108": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Yucaipa",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "109": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Redlands",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "111": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Riverside",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "112": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Blomington",
              "deliveryDelay": "",
              "available": 0
            }
          },
          {
            "113": {
              "pseudo": false,
              "sellDirect": false,
              "called": "Star Chino",
              "deliveryDelay": "",
              "available": 0
            }
          }
        ],
        "perCarQty": 0,
        "uofm": {
          "100": "",
          "101": "",
          "102": "",
          "103": "",
          "108": "",
          "109": "",
          "111": "",
          "112": "",
          "113": ""
        },
        "sortRequired": false,
        "minQty": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        },
        "costToggleState": 0,
        "updatePartStatus": false,
        "buyInc": {
          "100": 1,
          "101": 1,
          "102": 1,
          "103": 1,
          "108": 1,
          "109": 1,
          "111": 1,
          "112": 1,
          "113": 1
        }
      }
    }
  ],
  "running": false
}

【问题讨论】:

  • 请发布您的代码并解释您遇到的确切问题,以便我们以此为基础。如果您不知道,我建议您先从简单的示例开始,然后再深入研究复杂的结构。我敢肯定在 SO 中一定有很多类似的问题。
  • 看看 JsonPath。 goessner.net/articles/JsonPath
  • 我一直在寻找简单的代码来实现这一点。我已经尝试了一些解决方案,但没有奏效。我是新手...
  • 租个编码器,他们帮你搞定了:)

标签: c# json json.net json-deserialization


【解决方案1】:

jsonutils.com,生成json类,从nugets项目下载newtonsoft,尝试使用json序列化方法。

【讨论】:

  • 谢谢。我做了这个过程。现在它将要求我设置类的所有值/属性。有什么方法可以自动填充它们,因为我已经有了 json。我需要获取一些价值吗?
  • 使用 Newtonsoft nuget。您可以使用 JsonConvert.Deserialize(string json);例如。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 2021-06-20
  • 2018-01-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多