Java中的Hierarchal Regex

时间:2017-07-09 10:58:06

标签: java regex

  {
    schoolObject:{
      schoolDetails:{
        PrincipleId:5706980052,
        isPaymentDone:false,
        classId:"500720478039",
        classDetails:[
          {
            classId:123591,
            studentList:[
              {
                studentType:0,
                categoryName:"",
                lastYearFee:{
                  amount:10.00,
                  denomination:"INR"
                },
                currentYearFee:{
                  amount:49.99,
                  denomination:"INR"
                }
              },
              {
                studentType:1,
                categoryName:"",
                lastYearFee:{
                  amount:5.00,
                  denomination:"INR"
                },
                currentYearFee:{
                  amount:15.00,
                  denomination:"INR"
                }
              }
            ],
            ItemId:1234567,
            schoolInternalId:"976-345272383",
            netAmount:{
              amount:60.00,
              denomination:"INR"
            },
            studentAccountId:953217682525
          }
  }

所以,我必须解析这个String并写一个验证函数,使lastYearFee和currentYearFee的总和应该与studentType 0的netChange匹配。

此示例中:对于学生类型0,lastYearFee为10.00,currentYearFee为49.99,Netcharge为60.00。总和是59.99,与NetCharge不匹配。所以我必须在currentYearFee中添加0.01。

我想到的解决方案.. 搜索lastYearFee,搜索当前年费,搜索和netCharge。检查差异并调整currentYearFee。但我不是为此写REGEX。让我们假设我们假设这个结构永远不会改变。我们如何编写解决方案?

问题2: 挑战: 我必须使逻辑有点通用.. 我想写一个正则表达式来提取信息..

  1. 获取studentList :: schoolObject,然后是classDetails,后跟studentList .. 所以这会给出

    studentList:[
      {
        studentType:0,
        categoryName:"",
        lastYearFee:{
          amount:10.00,
          denomination:"INR"
        },
        currentYearFee:{
          amount:49.99,
          denomination:"INR"
        }
      },
      {
        studentType:1,
        categoryName:"",
        lastYearFee:{
          amount:5.00,
          denomination:"INR"
        },
        currentYearFee:{
          amount:15.00,
          denomination:"INR"
        }
      }
    ]
    

    现在可以有多个条目,对于studentType 0,1,2 ......其中只提取0 ... studentType中可以有多个条目:0本身。像这里只有currentYearFee和lastYearFee存在。还有更多......

  2. 现在schoolObject中的数量后跟classDetails,后跟netCharge ...

  3. 得到不同的内容,并修改studentList中的最后一项。

  4. 注意:这看起来像JSON,但字段名称中没有双引号。我无法用JSON转换它。我必须修改字符串..

0 个答案:

没有答案