簡體   English   中英

將部分JSON格式的列表數據轉換為映射

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM