反序列化更改的JSON

时间:2017-06-05 20:40:09

标签: c# json

编辑1:仍未解决......

编辑2:终于解决了!见下面的答案。

我想在C#中反序列化更改的JSON。有了它,为它创建类是不可能的,因为我无法为每个更改的部分创建类。对象是那些正在改变的对象,如下所示:

未更改的JSON:

{
  "Class 1": {
    "Blablabla": {
       "ExampleValue1": "Example Value",
       "ExampleValue2": 500
  },
    "Blablabla-Blablabla": {
       "ExampleValue1": "Example Value",
       "ExampleValue2": 1000
}

到此:

{
  "Class 1": {
    "Blablabla-Changed-Blablabla": {
       "ExampleValue1": "Changed Example Value",
       "ExampleValue2": 750
  },
    "Blablabla-Blablabla-Changed-Blablabla": {
       "ExampleValue1": "Changed Example Value",
       "ExampleValue2": 1125
}

我怎样才能在C#中做到这一点?

2 个答案:

答案 0 :(得分:2)

您可以使用it('should have a valid license number plate when screen contains as ANPR request', function () { var buttonKey; buttonKey = browser.driver.findElement(by.id('button_A')); buttonKey.click(); browser.sleep(SLEEP_TIMER); buttonKey = browser.driver.findElement(by.id('button_B')); buttonKey.click(); var base_keyboard_ok = browser.driver.findElement(by.id('base-keyboard-ok')); base_keyboard_ok.click(); var anpr_box_input = browser.driver.findElement(by.className('anpr-box-input')); anpr_box_input.getAttribute('innerHTML').then(function(anpr) { console.log("Plate: " + anpr); expect(globalE2EFunctions.validateAnpr(anpr)).toBe(true); }); }); module.exports = { //Still need to implement regex plates validation according to each country patterns validateAnpr: function(anpr) { if(anpr != 'CANCEL' && anpr != 'DEL' && anpr != 'OK'){ return true; } else{ return false; } } }; 中的JToken课程。

Newtonsoft.Json.Linq

请注意,如果您想在字段名中使用空格,则需要使用以下JSONPath表示法来使用JToken token = JToken.Parse(json); JToken class1 = token.SelectToken("Class1"); 方法。

SelectToken

您还可以动态访问JToken token = JToken.Parse(json); JToken class1 = token.SelectToken("['Class 1']") 的成员和子级。例如,如果要动态打印结构,可以执行以下操作

JToken

您也可以将json反序列化为JToken token = JToken.Parse(json); PrintChildren(token); private void PrintChildren(JToken item) { Console.WriteLine(item.Path); foreach(var child in item.Children()) { PrintChildren(child); } }

dynamic

或者

dynamic obj = JObject.Parse(json);

答案 1 :(得分:0)

我终于解决了。在计算完&我想,我设法解决了这个问题。我遍历动态对象,将JProperty对象转换为类并完成!