Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将字符串转换为HashMap_Java_Json_String_Map - Fatal编程技术网

Java 将字符串转换为HashMap

Java 将字符串转换为HashMap,java,json,string,map,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}

我从一个服务处得到这个字符串。我想要一个地图或者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);
   }
}
if(计时跟踪!=null){
arrayofTimeStamp=StringUtils.SplitByWhisteParator(StringUtils.remove(timingTrace,“”,“”,“”);
}
String[]totaltime=StringUtils.split(arrayofTimeStamp[0],“:”)
Map timestamps=newhashmap();
timestamp.put(totaltime[0],totaltime[1]);
String[]nodetimestamp=StringUtils.splitbywhistepator(arrayofTimeStamp[1],“在节点上花费的时间:”);
getMapped(nodetimestamp[1]);
public void getMapped(字符串json)抛出JSONException、ParseException{
JSONObject obj=新的JSONObject(json);
迭代器keys=obj.keys();
while(keys.hasNext()){
String key=keys.next();
字符串timetake=JsonPath.read(json,“$.”+key+“.timetake”);
时间戳。put(键,时间);
}
}

您在函数
getMapped(String json)
中使用了
timestamp
Map对象,该对象会给您带来错误,因为您没有传递在函数中声明的对象

要获得输出,您必须在下面的代码中写入更改,而不是函数
getMapped(stringjson)

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"));
}

代码中有一些编译错误。请看下面我的答案。
{nodea=10615, Total time taken=226006, nodez=5308}