Java 将字符串转换为HashMap
我从一个服务处得到这个字符串。我想要一个地图或者json。应该是这样的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}
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}