我试图得到一个关键:值对从一个简单的jsonString添加到内存选项卡后。如果面临一个问题,导致我的输入是一个字符串。看起来我的循环不能读取键值对
我读了很多关于它的话题,但我仍然遇到麻烦。如下图
所示{"nom":"BRUN","prenom":"Albert","date_naiss":"10-10-1960","adr_email":"abrun@gmail.com","titre":"Mr","sexe":"F"}
和我的方法,只在对象上找到…在我的循环
中结果是一样的public static ArrayHandler jsonSimpleObjectToTab(String data) throws ParseException {
if( data instanceof String) {
final var jsonParser = new JSONParser();
final var object = jsonParser.parse(data);
final var array = new JSONArray();
array.put(object);
final var handler = new ArrayHandler("BW_funct_Struct");
for( KeyValuePair element : array) {
handler.addCell(element);
Log.warn(handler);
}
return handler;
} else {
throw new IllegalArgumentException("jsonSimpleObjectToTab: do not support complex object" + data + "to Tab");
}
}
我也试过之前键入我的数组作为列表,对象等,没有keyValuePair对象,我会感激一些帮助。
再次感谢亲爱的StackOverFlowers;)
你可以试试:
const json = '{"nom":"BRUN","prenom":"Albert","date_naiss":"10-10-1960","adr_email":"abrun@gmail.com","titre":"Mr","sexe":"F"}';
map = new Map();
const obj = JSON.parse(json,(key,value) => {
map.set(key,value)
});
那么每一对都存储在map
只需在逗号处分割整行,然后在冒号处分割生成的部分。这将为您提供名称和值的各个部分。
试题:
假设
String input = ""nom":"BRUN","prenom":"Albert"";
然后
String[] nameValuePairs = input.split(",");
for(String pair : nameValuePairs)
{
String[] nameValue = pair.split(":");
String name = nameValue[0]; // use it as you need it ...
String value = nameValue[1]; // use it as you need it ...
}
可以使用typerreference转换为Map<String,String>这样你就有了键值对
String json = "{"nom":"BRUN","prenom":"Albert","date_naiss":"10-10-1960","adr_email":"abrun@gmail.com","titre":"Mr","sexe":"F"}";
ObjectMapper objectMapper = new ObjectMapper();
TypeReference<Map<String,String>> typeReference = new TypeReference<Map<String, String>>() {
};
Map<String,String> map = objectMapper.readValue(json, typeReference);
我刚刚回答了一个非常相似的问题。它的要点是,您需要将Json字符串解析为某个对象。在您的示例中,可以将其解析为Map。下面是这个问题的链接和我的答案。但这里有一个简短的版本:你可以使用任何Json库,但推荐的是Jackson Json(也称为更快的XML)或Gson(由Google)。这里是他们的用户指南网站。要解析Json文本到类实例,您可以使用ObjectMapper
类,这是Jackson-Json库的一部分。例如
public <T> T readValue(String content,
TypeReference valueTypeRef)
throws IOException,
JsonParseException,
JsonMappingException
看到Javadoc。但我也可以建议一个非常简单的JsonUtils
类,它是ObjectMapper
类的薄包装。您的代码可以像这样简单:
Map<String, Object> map;
try {
map = JsonUtils.readObjectFromJsonString(input , Map.class);
} catch(IOException ioe) {
....
}
这是JsonUtils类的Javadoc。这个类是我编写和维护的MgntUtils开源库的一部分。您可以从Maven工件或Github
中获得它。