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