json字符长拼接

private static JSONObject buildJson(int userid, List<GroupElement> groups,int termimal,long t,String mdkey) {
    JSONObject obj = null;
    try {
        obj = new JSONObject();
        JSONArray jsonArr = new JSONArray();
        JSONObject infojson = new JSONObject();
        obj.put("userid",userid);
        obj.put("termimal",termimal);
        obj.put("t",t);
        obj.put("mdkey",mdkey);
        JSONObject jsonObj= null;
        if (groups != null) {
            for (GroupElement groupElement : groups) {
                jsonObj = new JSONObject();
                jsonObj.put("id", Long.parseLong(groupElement.getGroupid()));
                jsonObj.put("name",groupElement.getTitle());
                jsonArr.put(jsonObj) ;
                infojson.put("data",jsonArr);
            }
        }
        obj.put("info",infojson);
        Log.e("obj", "buildJson: "+obj);
    } catch (JSONException e) {
        try {
            DBLog.writexiangyuanMesage("GroupSync JSONException e:"+e.getMessage());
        }catch (Exception ex){
            e.printStackTrace();
        }

        e.printStackTrace();
    }
    return obj;
}

拼完后是这样的(数据是随便写的):

{"userid":1,"termimal":1,"t":100000,"mdkey":"dede","info":{"data":[{"id":10002,"name":"哦哦哦"},{"id":10002,"name":"哦哦哦"},{"id":10002,"name":"哦哦哦"}]}}

用new Gson().toJson(user),发现简单省事,手动添加数据写的(主要在意格式,忽略数据的细节问题)

public class User {
    private int age;
    private int id;
    private String name;
    private String school;

    private Result info;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name == null ? "" : name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSchool() {
        return school == null ? "" : school;
    }

    public void setSchool(String school) {
        this.school = school;
    }

    public Result getInfo() {
        return info;
    }

    public void setInfo(Result info) {
        this.info = info;
    }

    public static class Data {
        private String obj;
        private int num;

        public String getObj() {
            return obj == null ? "" : obj;
        }

        public void setObj(String obj) {
            this.obj = obj;
        }

        public int getNum() {
            return num;
        }

        public void setNum(int num) {
            this.num = num;
        }


    }

    public static class Result {
        private List<Data> data;

        public List<Data> getData() {
            if (data == null) {
                return new ArrayList<>();
            }
            return data;
        }

        public void setData(List<Data> data) {
            this.data = data;
        }
    }
}
List<User.Data> strs = new ArrayList<>();
User.Data data = new User.Data();
data.setNum(99);
data.setObj("");
strs.add(data);
data.setNum(98);
data.setObj("");
strs.add(data);

User user = new User();
user.setAge(1);
user.setId(0);
user.setName("");
user.setSchool("a1");
User.Result result = new User.Result();
result.setData(strs);

user.setInfo(result);

Log.e("onCreate==", new Gson().toJson(user));

结果:onCreate==: {"age":1,"id":0,"info":{"data":[{"num":98,"obj":"哦"},{"num":98,"obj":"哦"}]},"name":"张","school":"a1"}

完成。之前的写过的,突发奇想整理一下。

### Kotlin 中 JSON 字符拼接的方法与示例 在 Kotlin 中,JSON 字符串的拼接可以通过多种方式实现,包括直接使用字符串模板、`StringBuilder` 或借助第三方库(如 Gson 或 Jackson)来构建复杂的 JSON 数据结构。以下是几种常见的方法及其示例代码。 #### 方法一:使用字符串模板 Kotlin 的字符串模板功能支持将变量或表达式嵌入到字符串中,这使得构建简单的 JSON 字符串变得非常方便[^1]。 ```kotlin fun main() { val name = "Alice" val age = 25 val json = """ { "name": "$name", "age": $age, "isAdult": ${age >= 18} } """.trimIndent() println(json) // 输出: // { // "name": "Alice", // "age": 25, // "isAdult": true // } } ``` #### 方法二:使用 `StringBuilder` 当需要动态构建复杂的 JSON 字符串时,可以使用 `StringBuilder` 来逐步拼接字符串,避免频繁创建新的字符串实例[^4]。 ```kotlin fun main() { val sb = StringBuilder() sb.append("{\n") sb.append(" \"name\": \"Alice\",\n") sb.append(" \"age\": 25,\n") sb.append(" \"isAdult\": true\n") sb.append("}") println(sb.toString()) // 输出: // { // "name": "Alice", // "age": 25, // "isAdult": true // } } ``` #### 方法三:使用第三方库(Gson 或 Jackson) 对于更复杂的 JSON 拼接场景,推荐使用第三方库(如 Gson 或 Jackson),这些库提供了强大的 API 来构建和解析 JSON 数据结构[^3]。 ##### 使用 Gson 示例: ```kotlin import com.google.gson.Gson import com.google.gson.JsonObject fun main() { val gson = Gson() val jsonObject = JsonObject().apply { addProperty("name", "Alice") addProperty("age", 25) addProperty("isAdult", true) } val jsonString = gson.toJson(jsonObject) println(jsonString) // 输出: {"name":"Alice","age":25,"isAdult":true} } ``` ##### 使用 Jackson 示例: ```kotlin import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.readValue fun main() { val objectMapper = ObjectMapper() val map = mutableMapOf<String, Any>() map["name"] = "Alice" map["age"] = 25 map["isAdult"] = true val jsonString = objectMapper.writeValueAsString(map) println(jsonString) // 输出: {"name":"Alice","age":25,"isAdult":true} } ``` #### 方法四:多行字符串与缩进 Kotlin 支持多行字符串(triple-quoted strings),结合 `trimIndent()` 可以轻松处理 JSON 字符串的格式化问题[^1]。 ```kotlin fun main() { val name = "Alice" val age = 25 val json = """ { "name": "$name", "age": $age, "isAdult": ${age >= 18} } """.trimIndent() println(json) // 输出: // { // "name": "Alice", // "age": 25, // "isAdult": true // } } ``` ### 总结 在 Kotlin 中,JSON 字符串的拼接可以通过字符串模板、`StringBuilder` 或第三方库(如 Gson 和 Jackson)实现。对于简单的 JSON 数据,字符串模板和多行字符串是不错的选择;而对于复杂场景,则推荐使用成熟的第三方库来确保代码的可维护性和可靠性。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值