java - 创建具有多种数据类型的json?
问题描述
我有一个要求,我必须创建一个看起来像这样的 Json
{
"method": "Main",
"executeTime": 4,
"arguments": [
{
"input": "input param"
},
{
"output": "output string"
}
],
"error": null
}
由于它内部有多种数据类型,所以我制作了一个哈希映射来将它们作为对象处理,然后我可以使用它GSON.toJson()
来获取我需要的东西。这是我的代码
HashMap<String, Object> firstLayer = new HashMap<String, Object>();
HashMap<String, Object> secLayer = new HashMap<String, Object>();
List<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
firstLayer.put("error", null);
firstLayer.put("method", <method String>);
firstLayer.put("executeTime", System.currentTimeMillis() - beginTime);
secLayer.put("input", <input param string>);
list.add(secLayer);
secLayer = new HashMap<String, Object>();
secLayer.put("output", <output string>);
list.add(secLayer);
// JIT pops error here. This is unexpected.
firstLayer.add("arguments", list);
错误消息说:The method add(String, List<HashMap<String,Object>>) is undefined for the type HashMap<String,Object>
。甚至尝试使用 cast likefirstLayer.add("arguments", (Object)list);
但仍然不对。还有其他选择或绕行吗?
解决方案
我错了,不是firstLayer.add("arguments", list);
但是firstLayer.put("arguments", list);
我觉得我今天太努力了。谢谢#tevemadar
推荐阅读
- node.js - 当我在 node.js 中运行 socket.io 和在 react.js 中运行 socket.io-client 时,无限循环
- amazon-web-services - cloudwatch event in aws lambda function not work in my aws educate account
- google-drive-api - 无论如何,是否可以使用 Google Drive API 列出哪些文件可以与任何有链接的人共享或可以公开搜索?
- php - 使用 Apache 和 Kohana 创建 PHP 服务器
- sas - 使用数据步骤中的 put 语句写入 SAS EG 中的默认 HTML 输出
- reactjs - 将选定的值保留在 React 的一组单选按钮中
- html - 由于全宽行,引导 4 网格空白
- javascript - Sequelize 模型关联不会创建新列
- csv - Wix:在 UI 序列中读取文本文件
- php - php @chdir 文件未找到