json 使用中代码复制

js中

数组的使用
var array = new Array();
var obj = {};
obj.number=number;
 array.push(obj);
 
if(r){
                var parameter = getFormParm("#bodyDiv :input");
                parameter.array = array;
                var jsonStr=JSON.stringify(parameter); 
                $.ajax({
                    type : "post",
                    dataType : "json",
                    data : {
                        jsonStr : jsonStr
                    },
                    url : "recipe.do?method=save",
                    success : function(data) {
                        $.messager.alert("提示", "操作成功");
                        $("#companyNo").val('');
                        $("#nhc01_editInfoDiv :input,textarea").val('');
                            $("#seridNumber").val(data.serid);    
                            $("#versions").val(data.versions);    
                            $("#receptumDiv").html('<fieldset><table id="drugInfo" style=" 900px;font-size: 12px;" border="0" align="center"><tr align="center"><th>药名</th><th>数量</th><th>单价</th><th>小计</th><th>用法</th><th>操作</th></tr></table></fieldset>');
                    }
                });
            }

action中

public @ResponseBody
    SeridNumber recipeSave(HttpServletRequest request, String jsonStr){    
            JSONObject jsonObj = new JSONObject(jsonStr);
        Recipe recipe = new Recipe();
        recipe.setId(jsonObj.optString("id"));
        setValueFromJson(jsonObj, recipe);// JSON类型转换成 对象
        JSONArray jsonArray = jsonObj.optJSONArray("array"); // 获得前面传过来的array 变量
        
        /**
             * 保存单据下面的药品
             * */
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject obj = jsonArray.optJSONObject(i);
                if (obj.length() == 0) {
                    continue;
                }
                String drugName = obj.optString("drugName");
                String numbers = obj.optString("number");
                String unitPrice = obj.optString("unitPrice");
                String subtotal = obj.optString("subtotal");
                String usage = obj.optString("usage");
                RecipeMedical recipeMedical = new RecipeMedical(recipeId,
                        drugName, numbers, unitPrice, subtotal, usage);
                recipeMedical.setDelFlag("0");
                
                recipeMedicalBO.saveRecipeMedical(recipeMedical);
            }
        }
        
        //将JSON转换成对像
    private Object setValueFromJson(JSONObject jsonObj, Object object)
            throws IllegalArgumentException, IllegalAccessException,
            InvocationTargetException, ParseException {
        if (jsonObj == null || object == null || jsonObj.length() == 0) {
            return null;
        }
        Method[] methods = object.getClass().getMethods();
        for (Method m : methods) {
            String mName = m.getName();

            if (!mName.startsWith("set")) {
                continue;
            }
            String firstLetter = mName.substring(3, 4);
            String otherLetter = mName.substring(4);

            String name = firstLetter.toLowerCase() + otherLetter;
            String value = jsonObj.optString(name);
            // 从JSON中解析出数据
            if (value.trim().equals("")) {
                continue;
            }

            Class[] parasClass = m.getParameterTypes();

            if (parasClass.length != 1) {
                continue;
            }
            // 判断方法参数类型
            String paraType = parasClass[0].getName();
            if (paraType.equals("java.lang.String")) {
                m.invoke(object, value);
            } else if (paraType.equals("java.lang.Integer")) {
                m.invoke(object, Integer.parseInt(value));
            } else if (paraType.equals("java.math.Bigdecimal")) {
                m.invoke(object, new BigDecimal(value));
            }
        }
        return object;
    }

主要用了类型转换用的

宝贝网址:

原文地址:https://www.cnblogs.com/W203654/p/2652508.html