更新时间:2023-12-06 15:31:46
I was having similar issue, and have found a solution, see below the code and comments. I am using Newtonsoft
though but it is worth checking if you can use Newtonsoft
library and have not found a solution for System.Text.Json
.
JSON
中的所有控件都是组件对象/数组的一部分,因此我们可以使用JSONPath
,有关更多信息,请参见链接.
All controls in your JSON
are part of component object/array so we can use JSONPath
, see the link for more details.
public void IterateJson(JObject obj, string mandatoryFieldKey)
{
JToken jTokenFoundForMandatoryField = obj.SelectToken
("$..components[?(@.key == '" + mandatoryFieldKey + "')]");
//Now we convert this oken into an object so that we can add properties/objects in it
if (jTokenFoundForMandatoryField is JObject jObjectForMandatoryField)
{
//We check if validate already exists for this field, if it does not
//exists then we add validate and required property inside the if condition
if (jObjectForMandatoryField["validate"] == null)
jObjectForMandatoryField.Add("validate",
JObject.FromObject(new { required = true })); //add validate and required property
else
{
//If validate does not exists then code comes here and
//we convert the validate into a JObject using is JObject statement
if (jObjectForMandatoryField["validate"] is JObject validateObject)
{
//We need to check if required property already exists,
//if it does not exists then we add it inside the if condition.
if (validateObject["required"] == null)
{
validateObject.Add("required", true); //add required property
}
}
}
}
}