如何仅从JSONObject,Java获取键和值

时间:2015-11-26 15:05:36

标签: java json

所以我在这里得到了这段代码:

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());

1 个答案:

答案 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());
}