代码之家  ›  专栏  ›  技术社区  ›  DummyGuy

将JSON数组转换为对象数组-Apache camel

  •  0
  • DummyGuy  · 技术社区  · 4 年前
    [
      {
        "Name": "ABC", 
        "ID": 1,
        "StartDate": 1444845395112,
        "EndDate": null,
        "ValueAction": null,
        "ValueSource": "lmn"
      }, 
      {
        "Name": "PQR", 
        "ID": 2,
        "StartDate": 1444845395119,
        "EndDate": 1446845395119,
        "ValueAction": null,
        "ValueSource": null
      }, 
      {
        "Name": "XYZ", 
        "ID": 3,
        "StartDate": null,
        "EndDate": null,
        "ValueAction": "qwe",
        "ValueSource": "lmn"
      }
    ]
    

    如何使用带有“groovy脚本/java”的拆分从这个json创建对象数组

    [Name、ID、ValueAction、ValueSource]如果StartDate为null,则此处的ValueAction/ValueSource应为null。所以数组应该是这样的。

     [[ABC,1, , lmn],[PQR,2, , ],[XYZ,3, , ]]
    
    0 回复  |  直到 4 年前
        1
  •  1
  •   injecteer    4 年前
    import groovy.json.*
    
    def json = new JsonSlurper().parseText '''[
      {
        "Name": "ABC",
        "ID": 1,
        "StartDate": 1444845395112,
        "EndDate": null,
        "ValueAction": null,
        "ValueSource": "lmn"
      },
      {
        "Name": "PQR",
        "ID": 2,
        "StartDate": 1444845395119,
        "EndDate": 1446845395119,
        "ValueAction": null,
        "ValueSource": null
      },
      {
        "Name": "XYZ",
        "ID": 3,
        "StartDate": null,
        "EndDate": null,
        "ValueAction": "qwe",
        "ValueSource": "lmn"
      }
    ]
    '''
    
    def res = json.findResults{ it.StartDate ? [ it.Name, it.ID, it.ValueAction ?: '', it.ValueSource ] : null }
    
    assert res.toString() == '[[ABC, 1, , lmn], [PQR, 2, , null]]'
    

    下次请发布有效的JSON。