地图的JSON格式

时间:2016-11-24 18:03:03

标签: java json gson

如何为以下格式创建json字符串

    Map<String, Map<String, Map<String ,Map<String, Set<VirtualNE>>>>>

其中VirtualNE是DTO类

 public class VirtualNE {

private VirtualNePK primaryKey;
private String status;
private String lockId;
private String frequency1;
private String frequency2;

     getter & setter goes here
 }

其中VirtualNePK作为主键类嵌套在VirtualNE dto类

public class VirtualNePK {
private String pCode;
private String neType;
private String src;
private String destination;

  getter & setter goes here
 }

1 个答案:

答案 0 :(得分:1)

此代码会将您的Map转换为json string,并提供以下格式:

Gson gson = new GsonBuilder().setPrettyPrinting().create();
String json = gson.toJson ( map1 );

主:

import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;

public class Main
{

    public static void main ( String [ ] args )
    {

        //virtualNE related object
        VirtualNePK pk = new VirtualNePK ( );
        pk.setDestination ( "destination1" );
        pk.setNeType ( "type1" );
        pk.setpCode ( "1" );
        pk.setSrc ( "source1" );

        VirtualNE virtualNE = new VirtualNE ( );
        virtualNE.setFrequency1 ( "freq1" );
        virtualNE.setFrequency2 ( "freq1" );
        virtualNE.setLockId ( "lock1" );
        virtualNE.setPrimaryKey ( pk );
        virtualNE.setStatus ( "status1" );      

        //Virtual Ne Set
        Set<VirtualNE> virtualNESet = new HashSet<VirtualNE> ( );

        virtualNESet.add ( virtualNE );

        //set
        Map<String,Set<VirtualNE> > map4 =  new HashMap<> ( );
        map4.put ( "string4" , virtualNESet );
        //Map3
        Map<String,Map<String, Set<VirtualNE>> > map3 = new HashMap<> ( );
        map3.put ( "string3" , map4 );
        //Map2
        Map< String,Map<String ,Map<String, Set<VirtualNE>>> > map2 =  new HashMap<> ( );
        map2.put ( "string2" , map3 );

        //map1
        Map<String, Map<String, Map<String ,Map<String, Set<VirtualNE>>>>> map1 = new HashMap<String, Map<String, Map<String ,Map<String, Set<VirtualNE>>>>> ( );
        map1.put ( "string1" , map2 );

        //Convert to Json
        Gson gson = new GsonBuilder().setPrettyPrinting().create();

        String json = gson.toJson ( map1 );

        System.out.println ( json.toString ( ) );

    }

}

输出:

{
  "string1": {
    "string2": {
      "string3": {
        "string4": [
          {
            "primaryKey": {
              "pCode": "1",
              "neType": "type1",
              "src": "source1",
              "destination": "destination1"
            },
            "status": "status1",
            "lockId": "lock1",
            "frequency1": "freq1",
            "frequency2": "freq1"
          }
        ]
      }
    }
  }
}

反向:

Map<String, Map<String, Map<String ,Map<String, Set<VirtualNE>>>>> map = gson.fromJson(json,new TypeToken<Map<String, Map<String, Map<String ,Map<String, Set<VirtualNE>>>>>>(){}.getType ( ) );

System.out.println ( map.toString ( )  );

输出:

{string1={string2={string3={string4=[VirtualNE [primaryKey=VirtualNePK [pCode=1, neType=type1, src=source1, destination=destination1], status=status1, lockId=lock1, frequency1=freq1, frequency2=freq1]]}}}}