Groovy 从JSON创建映射列表

Groovy 从JSON创建映射列表,groovy,Groovy,我从JSON中获取变量,并试图找出如何将它们放入映射列表中 我希望地图如下所示: [[ "taskId": 12345, "Name":"User1", "UserId":"abc123" ], [ "taskId": 000000, "Name":"User2", "UserId":"123abc" ]] 一些代码示例: Map activitiTasks = [:] tasksJson.data.each { task

我从JSON中获取变量,并试图找出如何将它们放入映射列表中

我希望地图如下所示:

[[
   "taskId": 12345, 
   "Name":"User1", 
   "UserId":"abc123"
 ], [
   "taskId": 000000, 
   "Name":"User2", 
   "UserId":"123abc"
]]
一些代码示例:

    Map activitiTasks = [:]

        tasksJson.data.each { taskObject ->
            Map tsksObj = [:]

            String taskId = getTaskId()
            tsksObj.put("taskId", taskId)

            String name = getUserName()
            tsksObj.put("Name", name)

            String userId = getUserId()
            tsksObj.put("userId", userId)

            tsksObj.put("userId", username)
            activitiTasks.put(tsksObj)
        }

更新以下蛋白石备注(谢谢:)
假设您的输入json文本如下所示

[
    {
        "taskId": "0234",
        "userId": "abc023",
        "name": "User0"
    },
    {
        "taskId": "1234",
        "userId": "abc123",
        "name": "User1"
    },
    {
        "taskId": "2234",
        "userId": "abc223",
        "name": "User2"
    }
]
下面的代码使用dmahapatro建议的JsonSlurper来完成这项工作。 内部对象将自动作为映射返回

def tasksJson = new JsonSlurper().parseText(jsonlistText)
println activitiTasks
println (activitiTasks[0] instanceof Map)
控制台将显示

[[name:User0,taskId:0234,userId:abc023],[name:User1,taskId:1234,userId:abc123],[name:User2,taskId:2234,userId:abc223]

true

我的数据以字符数组的形式发送回来,因此我在控制器中导入了grails.converters.JSON

一旦我这样做了,我通过执行以下命令,以JSON的形式返回ArrayList映射。我使用它作为AJAX调用,因此使用render而不是return。我使用的调用显示在testController.groovy(将列表呈现为JSON)中

下面示例中的列表是一个ArrayList(),它通过循环将贴图添加到其中

普惠制指数

function getItems(start) {
   $.ajax({
      url: '(${g.createLink(controller:'test', action:'getItems'})}',
      data: {startValue: start},
      type: "POST",
      success: function(data) {
         $(data).each(function() {
            console.debug($(this)[0].itemId);
         }
      }     
   }
}
testController.groovy

class testController {
   def index() {}
   def getItems() {
      def strStartVal = params.startValue ?: "0"
      def intStartVal = Integer.parseInt(strStartVal)
      def lists = dataService.getItemsFromQueue(intStartVal)
      render lists as JSON
   }
}
dataService.groovy

getItemsFromQueue(int start) {
   def items = getItemsFromDatabase("DBNAME", 20, start)
   List lists = new ArrayList()

   items.data.each { taskObject ->
      Map model = [:]

      ......Some Code Goes Here.......

      lists.add(model)
   }
   return lists
}

如果您有JSON,那么可以通过使用将其转换为所需的映射列表数据结构。您不需要手动将JSON解析为列表/映射。我收到了JSON,需要将其移动到映射列表。这个例子是为了让我了解您希望如何通过JSON(代码中称为tasksJson的变量)进行循环,并将其放入映射列表中。我可能遗漏了您试图做的事情,但这里提到的我的观点是。希望对您有所帮助。
def tasksJson=new JsonSlurper().parseText(jsonlistText)
-这足以获取地图列表。