【问题标题】:String to Map<String,Object> [closed]字符串到 Map<String,Object> [关闭]
【发布时间】:2016-11-16 09:03:56
【问题描述】:

我有这个字符串

"{id={date=1467991309000, time=1467991309000, timestamp=1467991309, timeSecond=1467991309, inc=-360249353, machine=-705844029, new=false}, id_lista={date=1467991309000, time=1467991309000, timestamp=1467991309, timeSecond=1467991309, inc=-360249354, machine=-705844029, new=false}, id_documento=1297183, estado=1, fecha_ing=1467991309026, fecha_mod=1468010645484, identificador_r=null, titulo=null, pais=null, sector=null, url=null, dato1=null, dato2=null}"

我如何在 java 中解析得到类似 Map&lt;String,Object&gt; 的东西

    id:{}
    id_lista:{}
    id_documento:123
    estado:1
    fecha_ing:1467991309026
    etc..

更新:

  • 最后我转换为 JSONArray 来获取值。

【问题讨论】:

  • 映射是什么意思?您向我们展示了一个字符串和另一个字符串,您想将一个字符串转换为另一个字符串吗?
  • 不,我需要字符串中的 Map
  • 我认为您的意思是 parsing 而不是 mapping。它看起来像您尝试解析的 JSON 格式。
  • 是的,类似的,但我需要将字符串转换为 Map
  • 不清楚你在问什么。 "{id=......" 是一个字符串吗?

标签: java spring


【解决方案1】:

您的意思是java.lang.Object 还是您自己制作的课程?

如果您使用以下 (Google Gson) 适当地定义了您的类,您就可以进入 java 世界:

BossesClass hisClass = new Gson().fromJson(bossesString, BossesClass.class);

您在地图中用作键值(字符串)的内容由您决定

【讨论】:

    【解决方案2】:

    在我看来,您好像有一个几乎是 JSON 格式的字符串。 根据您想要使用地图的目的,也许您想考虑使用 org.json.JSONObject 代替? (当您以示例字符串中的方式嵌套信息时,这尤其好。)

    要从您的字符串中获取 JSONObject,您首先必须用冒号替换所有等号。

    String jsonString = "your string here".replace("=",":");
    

    然后你可以创建一个 JSONObject。

    JSONObject jsonObj = new JSONObject(jsonString);
    

    如果您无论如何都想拥有地图,有关于从 JSONObject 到 Map 的答案 herehere

        public void parse(String json)  {
           JsonFactory factory = new JsonFactory();
    
           ObjectMapper mapper = new ObjectMapper(factory);
           JsonNode rootNode = mapper.readTree(json);  
    
           Iterator<Map.Entry<String,JsonNode>> fieldsIterator = rootNode.fields();
           while (fieldsIterator.hasNext()) {
    
               Map.Entry<String,JsonNode> field = fieldsIterator.next();
               System.out.println("Key: " + field.getKey() + "\tValue:" + field.getValue());
           }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-22
      • 1970-01-01
      • 2020-08-01
      • 1970-01-01
      • 2020-12-26
      • 2021-04-29
      • 2018-03-22
      • 1970-01-01
      • 2021-04-13
      相关资源
      最近更新 更多