根据json字符串查找每一级的path

/// <summary>
/// 组织rspList
/// </summary>
/// <param name="rspList">返回前端的json结构</param>
/// <param name="jsonText">json文本</param>
public static void GetrspList(List<rspListDto> rspList, string jsonText)
{
     Recursion(jsonText, rspList);
}
/// <summary>
/// 递归算法
/// </summary>
/// <param name="json">json字符串</param>
/// <param name="strList">返回前端的json结构</param>
/// <param name="pname">拼接节点path</param>
/// <param name="pid">父级id</param>
/// <returns></returns>
private static List<rspListDto> Recursion(string json, List<rspListDto> strList, string pname = "", string pid = "")
{
   var jobj = new JObject();
   if (json.StartsWith("[") && json.EndsWith("]"))
   {
     var arrs = JArray.Parse(json);
         jobj = (JObject)arrs[0];
   }
   else
   {
    jobj = JObject.Parse(json);
    }
   foreach (var x in jobj)
   {
      string id = SnowflakeId.NewId;
      string curPname = pname;
      if (x.Value.Type == JTokenType.Array ||
          x.Value.Type == JTokenType.Object)
      {
       var jsonStr = x.Value.ToString();
       bool flag = IsJobject(jsonStr);
       string nodetype = GetJsonNodeType(x.Value);
       if (flag)
       {
        Recursion(jsonStr, strList, string.Format("{0}.{1}", curPname, x.Key).TrimStart('.'), id);
        }
        rspListDto keyValue = new rspListDto
       {
         id = id,
         pid = pid,
         node_dis = x.Key,
         node_name = "",
         fullNode = string.Format("{0}.{1}", curPname, x.Key).TrimStart('.'),
         node_type = nodetype
       };
          strList.Add(keyValue);
     }
      else
      {
       rspListDto keyValue = new rspListDto
        {
          id = id,
          pid = pid,
          node_dis = x.Key,
          node_name = x.Value.ToString(),
          fullNode = string.Format("{0}.{1}", pname, x.Key),
          node_type = "attr"
          };
         strList.Add(keyValue);
        }
    }
          return strList;
  }
  
   private static string GetJsonNodeType(JToken valueStr)
  {
            if (valueStr == null)
            {
                return string.Empty;
            }
            string formatStr = valueStr.ToString(Newtonsoft.Json.Formatting.None).TrimStart();
            string nodeType;
              if (formatStr.StartsWith("{"))
            {
                nodeType = "obj";
            }
            else if (formatStr.StartsWith("\"") || formatStr.StartsWith("'"))
            {
                nodeType = "attr";
            }
            else if (formatStr.StartsWith("[{"))
            {
                nodeType = "objList";
            }
            else
            {
                nodeType = "attrList";
            }
            return nodeType;
        }
        /// <summary> 
        /// 判断是不是jobject对象 
        /// </summary> 
        /// <param name="jsonstr">json字符串</param> 
        /// <returns></returns> 
        private static bool IsJobject(string jsonstr)
        {
            bool flag = true;
            if (string.IsNullOrWhiteSpace(jsonstr))
            {
                flag = false;
                return flag;
            }
            try
            {
                JObject.Parse(jsonstr);
            }
            catch (Exception)
            {
                flag = false;
            }
            return flag;
        }

在这里插入图片描述
测试数据
//string jsonText = “{ ‘Rows’:{ ‘id’:{‘name’:‘zxy’,‘age’:‘18’},‘wo’:[‘123’],‘qlr’:[{‘xm’:‘xm’}]}}”;
string jsonText = “[{ ‘Rows’:{ ‘id’:{‘name’:‘zxy’,‘age’:‘18’},‘wo’:[‘123’],‘qlr’:[{‘xm’:‘xm’}]}}]”;

public class rspListDto
    {
        /// <summary>
        /// 后端每次解析json时生成,用于前端展示树形用
        /// </summary>
        public string id { get; set; }
        /// <summary>
        /// 父级编号(后端每次解析json时生成,用于前端展示树形用)
        /// </summary>
        public string pid { get; set; }
        /// <summary>
        /// 节点名称
        /// </summary>
        public string node_name { get; set; }
        /// <summary>
        /// 节点描述
        /// </summary>
        public string node_dis { get; set; }

        /// <summary>
        /// 节点类型
        /// </summary>
        public string node_type { get; set; }

        /// <summary>
        /// 完整节点名称(包括父级)
        /// </summary>
        public string fullNode { get; set; }
        
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 对象? 您可以使用 Deserialize JSON activity 将 Json 字符串转换为 Json 对象。 首先,使用 Assign activity 将字符串变量分配给 String 类型的变量。 然后在 Deserialize JSON 中指定此变量,即可将其作为 JSON 对象进行反序列化。 ### 回答2: 在UiPath中,将JSON字符串变量转换为JSON对象可以通过使用"Deserialize JSON"活动实现。 首先,在工作流程中获取JSON字符串变量。可以从API调用、文件读取或其他地方获取。将字符串存储到一个变量中。 然后,在设计面板中选择"Deserialize JSON"活动。将变量放入该活动的"JsonString"属性中。 接下来,在"Output"属性中定义一个变量,用于存储转换后的JSON对象。 最后,将以下步骤放到"Try"活动中,以处理异常: 1. 将"Deserialize JSON"活动放入"Try"活动中。 2. 将出现异常的活动放到"Catch"活动中。 完成以上步骤后,UiPath将尝试将JSON字符串变量转换为JSON对象。转换后的JSON对象将存储在指定的输出变量中。 这样,你就成功地将JSON字符串变量转换为JSON对象。你可以使用这个JSON对象进行后续的数据提取、操作或者其他需要的业务逻辑。 ### 回答3: 在UiPath中,我们可以使用Deserialize JSON活动将JSON字符串变量转换为JSON对象。 步骤如下: 1. 首先,创建一个字符串变量,保存JSON字符串。 2. 在UiPath活动中,搜索并添加一个Deserialize JSON活动。 3. 在Deserialize JSON活动的Properties面板中,将步骤1中创建的字符串变量作为Input的输入值。 4. 在活动的Output面板中,创建一个变量来保存转换后的JSON对象。 5. 运行工作流程,JSON字符串将被转换为JSON对象,并保存在变量中。 需要注意的是,JSON字符串必须具有有效的JSON格式,才能成功转换为JSON对象。如果字符串格式不正确,转换过程可能会失败,并显示错误消息。确保在转换之前,检查和验证JSON字符串的格式是否正确。 使用Deserialize JSON活动可以使我们在UiPath中轻松地处理和操作JSON数据,方便地提取所需的信息和进行后续的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值