经常做协议的时候用到json,个人习惯是定义协议文档,很少在这中场景中定义类,使用对象.

  这里使用一个人物有名字,性别,有一个物品列表做个简单示例记录.

  序列化

        JsonObject jo=new JsonObject();
jo.addProperty("Name", "testName");
jo.addProperty("Sex", "男");
JsonArray jArr=new JsonArray();
for(int i=0;i<3;i++)
{
JsonObject item=new JsonObject();
item.addProperty("ItemID", i);
item.addProperty("ItemName", "name"+i);
jArr.add(item);
}
jo.add("Items",jArr);
Logger.info("json:"+jo.toString());

  反序列化

        JsonParser jp=new JsonParser();
JsonObject jo2= jp.parse(jo.toString()).getAsJsonObject();
System.out.print("json name:"+jo2.get("Name").getAsString());
System.out.print("json sex:"+jo2.get("Sex").getAsString());
JsonArray jArr2=jo2.getAsJsonArray("Items");
for(int i=0;i<jArr2.size();i++)
{
  Logger.info("ItemID:"+jArr2.get(i).getAsJsonObject().get("ItemID").getAsInt());
  Logger.info("ItemName:"+jArr2.get(i).getAsJsonObject().get("ItemName").getAsString());
}

  java代码比起c#来说,还是繁琐了挺多.不过跨平台,各种开源,各种产品,少了很多局限性和束缚.

05-11 13:58