C# 如何基于JSON中的值将值绑定到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",
{
"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();
}