[英]Convert a List Partially JSON Formatted Data into a Map
我有以下對象數據如下
[{
name = john , id=1,email id : [abc@gmail.com,def@gmail.com,ghi@gmail.com]
},{
name = joy, id=2,email id : [jkl@gmail.com,mno@gmail.com,pqr@gmail.com]
}]
我希望將以下內容轉換為Map
{john=[abc@gmail.com,def@gmail.com,ghi@gmail.com]},{joy= [jkl@gmail.com,mno@gmail.com,pqr@gmail.com]}
在Java中,我將如何實現這一目標。
請幫助我
做到這一點絕非易事,繁瑣的手工工作以及很多錯誤的可能性,可以使用。 只要您的數據與顯示的完全一樣,那么它應該起作用。
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Person {
int id;
String name;
List<String> emails;
public static Person parse(String s) throws Exception {
Person person = new Person();
person.name = s.substring(0, s.indexOf(",")).replaceAll(".+= ?", "");
s = s.substring(s.indexOf(",") + 1, s.length());
person.id = Integer.parseInt(s.substring(0, s.indexOf(",")).replaceAll(".+= ?", "").trim());
s = s.substring(s.indexOf(",") + 1, s.length());
s = s.replaceAll(".+: ?", "").replaceAll("[ \\[\\]]", "");
person.emails = Arrays.asList(s.split(","));
return person;
}
public static List<Person> parseMany(String s) throws Exception {
List<Person> people = new ArrayList<Person>();
while (true){
int openBracket = s.indexOf("{");
int closeBracket = s.indexOf("}");
if(closeBracket == -1){
break;
}
people.add(parse(s.substring(openBracket, closeBracket)));
s = s.substring(closeBracket + 1, s.length());
}
return people;
}
public static void main(String[] args) throws Exception {
String s = "[{name = john , id=1,email id : [abc@gmail.com,def@gmail.com,ghi@gmail.com]},{name = joy, id=2,email id : [jkl@gmail.com,mno@gmail.com,pqr@gmail.com]}]";
List<Person> people = parseMany(s);
Map<String, List<String>> map = new HashMap<String, List<String>>();
for(Person person : people){
map.put(person.name, person.emails);
}
System.out.println(map);
}
}
輸出:
{joy = [jkl@gmail.com,mno@gmail.com,pqr@gmail.com],john = [abc@gmail.com,def@gmail.com,ghi@gmail.com]}
注意:
我沒有打擾評論此代碼,因為問題不遵循任何標准程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.