C# 如何基于JSON中的值将值绑定到JSON文件?

C# 如何基于JSON中的值将值绑定到JSON文件?,c#,json,data-binding,parameters,C#,Json,Data Binding,Parameters,我的客户端向我发送一个JSON文件,如下所示: { "onlineRequest":{ "MobileNumber":"75484568", "ProductNo":"100", "JsonFile":{ "evaluation":{ "number":[ { "@para-id":"5656",

我的客户端向我发送一个JSON文件,如下所示:

{  
   "onlineRequest":{  
      "MobileNumber":"75484568",
      "ProductNo":"100",
      "JsonFile":{  
         "evaluation":{  
            "number":[  
               {  
                  "@para-id":"5656",
                  "@new-code":"",
                  "@text":"Hello America"
               },
               {  
                  "@para-id":"3302",
                  "@new-code":"100",
                  "@text":"Hello UK"
               }
            ],
            "dropdown":[  
               {  
                  "@para-id":"2572",
                  "@new-code":"",
                  "@text":"This is first dropdown",
                  "option":[  
                     {  
                        "@text":"Option 1",
                        "@value":"0"
                     }
                  ]
               },
               {  
                  "@para-id":"2584",
                  "@new-code":"",
                  "@text":"This is second dropdown",
                  "option":[  
                     {  
                        "@text":"Excellent",
                        "@value":"0"
                     }
                  ]
               },
               {  
                  "@para-id":"2575",
                  "@new-code":"",
                  "@text":"This is third dropdown",
                  "option":[  
                     {  
                        "@text":"Available",
                        "@value":"0"
                     }
                  ]
               }
            ]
         }
      }
   }
}
现在,我需要根据JSON文件的一些参数设置该文件的值。在编号部分,如果

如果@para id=5656,则@new code=“0000”

如果@para id=3302,则@new code=“1111”

如果@para id=3585,则@new code=“2222”

为了实现这一点,我的C代码如下,
source
表示JSON字符串

var json = JToken.Parse(source);
var dict = new Dictionary<string, string>
{
    ["5656"] = "0000",
    ["3302"] = "1000",
};

foreach (var number in json.SelectToken("onlineRequest.JsonFile.evaluation.number").ToArray())
{
    var id = (string)number["@para-id"];
    if (id != null && dict.TryGetValue(id, out var code))
    {
        number["@new-code"] = code;
    }
}

我很困惑,所以请帮我解决这个问题。如何设置如上所述的值。提前谢谢

与现有的想法相同,只是这次需要使用自定义函数(
Func
)来计算新值:

var dropdownNewCodeMapping = new Dictionary<int, Func<int, int>>
{
    [2572] = x => (x + 1) * 50,
    [2584] = x => (x + 1) * 10,
    [2575] = x => (x + 1) * 40,
};
foreach (var dropdown in json.SelectToken("onlineRequest.JsonFile.evaluation.dropdown").ToArray())
{
    var id = (int)dropdown["@para-id"];
    var value = (int)dropdown.SelectToken("option[0].@value");

    dropdown["@new-code"] = dropdownNewCodeMapping[id](value).ToString();
}
var dropdownNewCodeMapping=新字典
{
[2572]=x=>(x+1)*50,
[2584]=x=>(x+1)*10,
[2575]=x=>(x+1)*40,
};
foreach(json.SelectToken(“onlineRequest.JsonFile.evaluation.dropdown”).ToArray()中的var下拉列表)
{
变量id=(int)下拉列表[“@para id”];
var value=(int)下拉列表。SelectToken(“选项[0]。@value”);
dropdown[“@new code”]=dropdownNewCodeMapping[id](值).ToString();
}

@Xiaoy312请帮帮我,先生:)当下拉列表中只有一个
@new value
有多个
@value
时,“有@value=x然后有@new code=y”是什么意思?举一个变换前后的例子。@Xiaoy312您好,先生,我更新了问题。我像前面一样收到JSON,但我像上面一样编辑JSON字符串。如果
@para id=2572
,在那里
@value=0@新代码应该是50,如果@value=1@新代码应该是100,如果@value=2@新代码应该是150
。其他@para id'也一样s@Xiaoy312请帮帮我,先生:(我发布了预期输出)
var dropdownNewCodeMapping = new Dictionary<int, Func<int, int>>
{
    [2572] = x => (x + 1) * 50,
    [2584] = x => (x + 1) * 10,
    [2575] = x => (x + 1) * 40,
};
foreach (var dropdown in json.SelectToken("onlineRequest.JsonFile.evaluation.dropdown").ToArray())
{
    var id = (int)dropdown["@para-id"];
    var value = (int)dropdown.SelectToken("option[0].@value");

    dropdown["@new-code"] = dropdownNewCodeMapping[id](value).ToString();
}