如何用干净的代码在Java中生成JSON

问题描述 投票:0回答:1

我有这样的代码:

Map<String, Object> tempParam = new HashMap<>();
tempParam.put("custid", "123");
json = gson.toJson(tempParam);

String keyParams = "schema;tablename;where;clause";
String valueParams = "dbtrial;mastercustomer;"+json+";sort=id,date_&limit=10";

String res = genJSON(keyParams, valueParams);

function genJSON(String keyParams, String valueParams){

    String[] key = keyParams.split(";");
    String[] value = valueParams.split(";");

    JSONObject objectMessage = new JSONObject();
    for(int i = 0 ; i < key.length ; i++){
        objectMessage.put(key[i], value[i]);
    }

    return objectMessage.toString();
    
}

我关心的是用分号分隔符然后分割的书写方式, 还有其他更简单或更有效的方法吗?我们可以让它更有活力吗? 因为“genJSON”函数将在全球范围内用于各种需求。 至少我想要干净的代码。

我尝试过使用这样的数组,但似乎没有太大区别。

String[] keyParams = ["schema", "tablename", "where", "clause"];
String[] valueParams = {"dbtrial", "mastercustomer", json, "sort=id,date_&limit=10"};

function genJSON(String[] keyParams, String[] valueParams){

    JSONObject objectMessage = new JSONObject();
    for(int i = 0 ; i < keyParams.length ; i++){
        objectMessage.put(keyParams[i], valueParams[i]);
    }

    return objectMessage.toString();
}

您还有其他更好的想法或建议吗?

我用的是java 7

java json spring performance coding-style
1个回答
0
投票

您尝试使用数组来表示

keyParams
valueParams
是一个好主意,可以使代码更干净、更易于维护。然而,在 Java 中初始化数组的方式存在一个小问题。这是更正后的代码:

import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        JSONObject tempParam = new JSONObject();
        tempParam.put("custid", "123");
        String json = tempParam.toString();

        String[] keyParams = {"schema", "tablename", "where", "clause"};
        String[] valueParams = {"dbtrial", "mastercustomer", json, "sort=id,date_&limit=10"};

        String res = genJSON(keyParams, valueParams);
        System.out.println(res);
    }

    public static String genJSON(String[] keyParams, String[] valueParams) {
        JSONObject objectMessage = new JSONObject();
        for (int i = 0; i < keyParams.length; i++) {
            objectMessage.put(keyParams[i], valueParams[i]);
        }

        return objectMessage.toString();
    }
}

此代码将按预期工作,并且是管理

keyParams
valueParams
的更简洁的方式。使用数组的主要优点是它可以更好地组织代码并提高代码的可读性,特别是在参数数量增加的情况下。

© www.soinside.com 2019 - 2024. All rights reserved.