将String转换为HashMap

时间:2014-08-30 09:03:04

标签: java json string map

我从服务中获取此字符串。我想要一张地图或者json。它看起来应该是这样的。

Map output
  Total time taken:226006
  nodea:10615
  nodez:5308'


String timingTrace = "Total time taken:226006.,"
            + "time spent in nodes:{\"nodea\":{\"timeTaken\":10615},\"nodez\":{\"timeTaken\":5308}}\"";

我试过的是下面的代码。我能做得更好吗?任何可以轻松将上述字符串转换为映射的库。

if (timingTrace != null) {
        arrayofTimeStamp = StringUtils.splitByWholeSeparator(StringUtils.remove(timingTrace, " "), ".,");
    }
String[] totaltime = StringUtils.split(arrayofTimeStamp[0], ":")

Map<String,Object> timestamps = new HashMap<String, Object>();
timestamp.put(totaltime[0], totaltime[1]);

String[] nodetimestamp = StringUtils.splitByWholeSeparator(arrayofTimeStamp[1], "time spent in nodes:");

getMapped(nodetimestamp[1]);

public void getMapped(String json) throws JSONException, ParseException {
    JSONObject obj = new JSONObject(json);
    Iterator<String> keys = obj.keys();
    while (keys.hasNext()) {
        String key = keys.next();
        String timetaken = JsonPath.read(json, "$." + key + ".timeTaken");
        timestamp.put(key, timetaken);
   }
}

1 个答案:

答案 0 :(得分:0)

您正在使用timestamp地图&lt;&gt;函数getMapped(String json)中的对象,因为你没有传递它而给你错误,你在函数中声明了它。

要获得输出,您已在代码下方提及更改而不是函数getMapped(String json)

JSONObject obj = new JSONObject(nodetimestamp[1]);
Iterator<String> keys = obj.keys();
while (keys.hasNext()) 
{
    String key = keys.next();
    String timetakenStr = obj.getString(key);
    JSONObject child = new JSONObject(timetakenStr);
    timestamps.put(key, child.getString("timeTaken"));
}

使用上面的代码,Map<>将包含您提到的内容。 OutPut:

{nodea=10615, Total time taken=226006, nodez=5308}