当前位置: 首页 > 知识库问答 >
问题:

如何从Hashmap数据填充JSON?

徐俊人
2023-03-14

所以我用Java处理这些数据:

HashMap<String, String> currentValues = new HashMap<String, String>();
String currentID;
Timestamp currentTime;
String key;

我需要将其转换为JSON:

{
    "date" : "23098272362",
    "id"   : "123",
    "key"  : "secretkey",
    "data" : [{
             "type"  : "x",
             "value" : "y"
         },{
             "type"  : "a",
             "value" : "b"
         }
     ]
}

但是我不知道怎么做。

目前我认为这是最好的方法:

JSONObject dataset = new JSONObject();
dataset.put("date", currentTime);
dataset.put("id", currentID);
dataset.put("key", key);

JSONArray payload = new JSONArray();
payload.add(dataset);

但我不确定如何使用Hashmap实现这一点。我知道是这样的:

JSONObject data = new JSONObject();
Iterator it = currentValues.entrySet().iterator();
while (it.hasNext()) {
    Map.Entry pair = (Map.Entry)it.next();

    data.put("type", pair.getKey()) ;
    data.put("value", pair.getValue()) ;
    it.remove(); // avoids a ConcurrentModificationException
}

但确切的语法,以及如何将其与其他数据一起添加,我无法计算。有什么想法吗?

共有2个答案

白星海
2023-03-14

只需迭代地图条目,将“数据”对象放入数组:

for (Map.Entry<String, String> e : currentValues) {
    JSONObject j = new JSONObject()
                     .put("type", e.getKey())
                     .put("value", e.getValue());
    payload.add(j);
}

然后将数组放入生成的json中:

dataset.put("data", payload);
逑俊楚
2023-03-14

您可以像下面这样创建JSONObject,然后将其添加到有效负载中。

JSONObject dataset = new JSONObject();
dataset.put("date", currentTime);
dataset.put("id", currentID);
dataset.put("key", key);

JSONArray payload = new JSONArray();
JSONObject data = new JSONObject();

Iterator it = currentValues.entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
data.put("type", pair.getKey()) ;
data.put("value", pair.getValue()) ;
it.remove(); // avoids a ConcurrentModificationException
}
JSONArray mapArray = new JSONArray();
mapArray.add(data);
dataset.put("data", mapArray);
payload.add(dataset);
 类似资料:
  • 我有一个有两列的表,一个是string,另一个是double Type。例如, 我正在尝试读取所有的值,并将它们加载到中 我在读取表数据方面没有任何问题,但不能按我的要求将它们放入HashMap中。 我编写了一个示例代码来从两个不同的数组(string和double)填充一个HashMap,但仍然无法处理HashMap的值部分,它是一个数组。 任何建议我如何处理HashMap的值部分,它是一个数组

  • 作为我作业的一部分,我们得到了一个我们不能更改的接口,以及一些用来开发我们方法的预定义测试。 界面如下: 我正在运行的特定测试: 以及我需要从测试中创建的方法: 从测试中我可以看出,在方法中,我需要创建并用注册映射中匹配的学生填充它,然后返回列表。 我创建了以下字段:- 我搞不懂的是,如何将注册地图中的数据传递到学生列表中,以使测试中的断言为真。

  • 我如何从一个HashMap填充JList而只在列表中显示值呢?

  • series(string $value,[ string $categories]) string $value $config = ['path' => './tests']; ​ $fileObject = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $fileObject->fileName('tutorial.xlsx'); $

  • factory 辅助函数 必须 使用 factory 方法来做数据填充,因为是框架提倡的,并且可以同时为测试代码服务。 运行效率 开发数据填充时,必须 特别注意 php artisan db:seed 的运行效率,否则随着项目的代码量越来越大,db:seed 的运行时间会变得越来越长,有些项目多达几分钟甚至几十分钟。 原则是: Keep it lighting speed. 只有当 db:seed

  • 问题内容: 我一直在尝试使用从数据库查询的数据加载TableView,但似乎无法使其正常工作。 这是我第一次尝试用数据库查询项填充数据库的情况,以防我的代码看起来杂乱无章,而且效果不佳。 FXML是通过JavaFx SceneBuilder完成的。 这是数据库查询类: 这是通过JavaFx场景生成器生成的FXML脚本: 问题答案: 这是将数据从数据库填充到tableView的最佳解决方案。 这是参