所以我在这里得到了这段代码:
out.close()
基本上将我的信息转化为:
public JSONObject serializeMessageToJson(TextMessage m) {
JSONObject obj = new JSONObject();
obj.put(m.getSender(), m.getMessage());
return obj;
}
在文件系统中我将其发送到。
现在,假设我使用扫描仪,请按照以下方式获取该字符串:
{"D":"dsdsa"}
{"D":"dsadas"}
{"D":"dsadas"}
如何将文件系统内的这个对象解析成一个新的Message(String“D”,String“dsdsa”)?
提前致谢
正如阿德里安所说,试着这样说:
while(scan.hasNextLine()){
String ser = scan.nextLine();
,不幸的是我在msg上得到了null:
while(scan.hasNextLine()){
String ser = scan.nextLine();
JsonParserFactory factory= JsonParserFactory.getInstance();
com.json.parsers.JSONParser parser = factory.newJsonParser();
Map jsonMap = parser.parseJson(ser);
Set senderSet= jsonMap.keySet();
String sender = senderSet.toString();
String message = (String)jsonMap.get(sender);
msg= new TextMessage(message, sender,"",0);
System.out.println(msg.getMessage()+msg.getSender());
答案 0 :(得分:1)
你可以使用像quick-json这样的库,并像这样解析它:
JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);
获得Map
后,您只需获取密钥和值即可。
for ( Map.Entry<String, String> entry : jsonMap.entrySet()) {
String sender= entry.getKey();
String message= entry.getValue();
TextMessage msg = new TextMessage(message, sender, "",0);
System.out.println(msg.getMessage()+msg.getSender());
}
修改强>
上面的代码因不匹配错误而中断,根据this answer它是一个编译器错误。你可以试着欺骗它:
Set<Entry> entries = jsonMap.entrySet();
for ( Entry entry : entries) {
String sender= entry.getKey();
String message= entry.getValue();
TextMessage msg = new TextMessage(message, sender, "",0);
System.out.println(msg.getMessage()+msg.getSender());
}