我从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)
}
答案 0 :(得分:1)
更新以下蛋白石评论(谢谢:))
我们假设您的输入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]]
的真强>
答案 1 :(得分:0)
我的数据以字符数组的形式发回,因此在我的控制器中导入了grails.converters.JSON。
一旦我这样做,我通过执行以下命令将地图的ArrayList返回为JSON。我使用它作为AJAX调用,所以使用render而不是return。我使用的调用显示在testController.groovy中(渲染列表为JSON)。
下面示例中的列表是一个ArrayList(),它通过循环将地图添加到其中。
index.gsp中
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
}