gpt4 book ai didi

java - 迭代每个键有多个值的字符串对象的映射

转载 作者:行者123 更新时间:2023-11-30 05:25:23 28 4
gpt4 key购买 nike

我收到以下 JSON 对象,我只对错误感兴趣。我可以将每个键和值记录到控制台。问题是,例如“电子邮件”键有 2 个值,我如何创建映射或列表,以便每个值都有自己的键并删除 JSON 格式?

{
"errors":
{
"Email":["'Email' must not be empty.","'Email' is not a valid email address."],
"Company":["'Company' must not be empty."],
"LastName":["'Last Name' must not be empty."],
"Password":["'Password' must not be empty."],
"FirstName":["'First Name' must not be empty."],
"Telephone":["'Telephone' must not be empty."]

},
"title":"One or more validation errors occurred.",
"status":400,
"traceId":"80005307-0001-5d00-b63f-84710c7967bb"
}

在 codenameone 中,我使用 JSON 解析器将其解析为字符串、对象的映射:

  Map<String,Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(r.getResponseData()), "UTF-8"));
Map<String,Object> value = (Map<String,Object>) result.get("errors");


for (Map.Entry<String, Object> entry : value.entrySet()) {

Log.p(entry.getKey());
Log.p(entry.getValue().toString())
}

最佳答案

email 的值字段是一个列表,如 [] 所示方括号。

因为看起来 errors 的所有字段有字符串列表,您应该简单地转换为 Map<String, List<String>> ,因此您无需进一步转换。

Map<String,Object> result = /*result of parsing JSON input*/;

@SuppressWarnings({ "rawtypes", "unchecked" })
Map<String, List<String>> errors = (Map) result.get("errors");
for (Entry<String, List<String>> error : errors.entrySet()) {
String name = error.getKey();
List<String> messages = entry.getValue();

Log.p(name);
for (String message : messages)
Log.p(" " + message);
}

关于java - 迭代每个键有多个值的字符串对象的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58768550/

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