{
  "chart":{
    "caption":"Business Results 2005 v 2006",
    "xaxisname":"Month",
    "yaxisname":"Revenue",
    "showvalues":"0",
    "numberprefix":"$"
  },
  "categories":[{
      "category":[{
          "label":"Jan"
        },
        {
          "label":"Feb"
        },
        {
          "label":"Mar"
        }
      ]
    }
  ],
  "dataset":[{
      "seriesname":"2006",
      "data":[{
          "value":"27400"
        },
        {
          "value":"29800"
        },
        {
          "value":"25800"
        }
      ]
    },
    {
      "seriesname":"2005",
      "data":[{
          "value":"10000"
        },
        {
          "value":"11500"
        },
        {
          "value":"12500"
        }
      ]
    }
  ],
  "trendlines":{
    "line":[{
        "startvalue":"26000",
        "color":"91C728",
        "displayvalue":"Target",
        "showontop":"1"
      }
    ]
  },
  "styles":[{
      "definition":[{
          "style":[{
              "name":"CanvasAnim",
              "type":"animation",
              "param":"_xScale",
              "start":"0",
              "duration":"1"
            }
          ]
        }
      ],
      "application":[{
          "apply":[{
              "toobject":"Canvas",
              "styles":"CanvasAnim"
            }
          ]
        }
      ]
    }
  ]
}
以上JSON数据用java对象怎样表示? 会的请解答,谢谢。

解决方案 »

  1.   

    1. 工程导入JSON-tool .jar1. 接受前台json数据String data = request.getParameter("data");2. 通过接收到的json数据构建一个JSONObject或是一个JSONArray
    JSONObject json = new JSONObject(data);3. 通过JSONMapper的tojava()方法将JSONObject转化为我们需要的对象。    但在处理的过程中,如果遇到主外键关联的时候很不好处理,容易出错,所以就想到了根据java的反射
    机制动态去转化JSON对象为pojo对象。private Object fromJsonToJava(JSONObject json,Class pojo)
            throws Exception{
            // 首先得到pojo所定义的字段
            Field [] fields = pojo.getDeclaredFields();
            // 根据传入的Class动态生成pojo对象
            Object obj = pojo.newInstance();
            for(Field field: fields){
                // 设置字段可访问(必须,否则报错)
                field.setAccessible(true);
                // 得到字段的属性名
                String name = field.getName();
                // 这一段的作用是如果字段在JSONObject中不存在会抛出异常,如果出异常,则跳过。
                try{
                        json.get(name);
                }catch(Exception ex){
                    continue;
                }
                if(json.get(name) != null && !"".equals(json.getString(name))){
                    // 根据字段的类型将值转化为相应的类型,并设置到生成的对象中。
                    if(field.getType().equals(Long.class) || field.getType().equals(long.class)){
                        field.set(obj, StringUtil.parseLong(json.getString(name)));
                    }else if(field.getType().equals(String.class)){
                        field.set(obj, json.getString(name));
                    } else if(field.getType().equals(Double.class) || field.getType().equals(double.class)){
                        field.set(obj, StringUtil.parseDouble(json.getString(name)));
                    } else if(field.getType().equals(Integer.class) || field.getType().equals(int.class)){
                        field.set(obj, StringUtil.parseInt(json.getString(name)));
                    } else if(field.getType().equals(java.util.Date.class)){
                        field.set(obj, DateTimeUtil.stringToDate(json.getString(name), "yyyy-MM-dd"));
                    }else{
                        continue;
                    }
                }
            }
            return obj;
        } 
      

  2.   

    你可以用 LinkedHashMap,ArrayList,等来表示。其实Java有处理Json的库,实现也是使用了很多容器来描述的。import net.sf.json.JSONArray;   
    import net.sf.json.JSONObject;包自己去下载。
      

  3.   

    json对象可以用Map表示
    json数组可以用Array表示
      

  4.   

    属性值对都存在HashMap里
    数组存在List里
    万变不离其宗,无非是谁套谁的问题
      

  5.   

    需要外部包的,,或者你去看看Gson..