gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:46:07 24 4
gpt4 key购买 nike

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

public JSONObject serializeMessageToJson(TextMessage m) {
JSONObject obj = new JSONObject();
obj.put(m.getSender(), m.getMessage());
return obj;
}

这基本上将我的消息变成了这样:

{"D":"dsdsa"}
{"D":"dsadas"}
{"D":"dsadas"}

在我将其发送到的文件系统中。

现在,假设我使用扫描仪将字符串放在那里,如下所示:

while(scan.hasNextLine()){
String ser = scan.nextLine();

如何将文件系统内的这个对象解析为新的 Message(String "D", String "dsdsa")?

提前致谢

正如阿德里安所说,尝试这样表述:

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

不幸的是我的消息为空:

null[D]
null[D]
null[D]

最佳答案

您可以使用一些库,例如 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());
}

关于java - 如何仅从 JSONObject 获取键和值,Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33941772/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com