net.sf.json - put、accumulate、element

net.sf.json 需要的 jar:

注意版本,部分版本之间会冲突。

package com.ikoo;

import net.sf.json.JSON;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class TestJSON {
    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        JSONArray jsonArray = new JSONArray();
        /**
         * public Object put(Object key, Object value)
         * 将value映射到key下
         * 如果此JSONObject对象之前存在一个value在这个key下,那么当前的value会替换掉之前的value
         */
        jsonObject.put("one", "first");
        // jsonObject: {"one":"first"}
        System.out.println("jsonObject: " + jsonObject.toString());

        jsonObject.put("two", "second");
        // jsonObject: {"one":"first","two":"second"}
        System.out.println("jsonObject: " + jsonObject.toString());

        jsonObject.put("two", "cover");
        // jsonObject: {"one":"first","two":"cover"}
        System.out.println("jsonObject: " + jsonObject.toString());

        jsonObject.put("one", null);// value为null的话,直接移除key
        // jsonObject: {"two":"cover"}
        System.out.println("jsonObject: " + jsonObject.toString());

        /**
         * public JSONObject accumulate(String key, Object value)
         * 累积value到这个key下
         * 1.如果当前已经存在一个value在这个key下,那么会有一个JSONArray将存储在这个key下来保存所有累积的value
         * 2.如果已经存在一个JSONArray,那么当前的value就会添加到这个JSONArray中
         *
         */
        JSONObject jsonObj = new JSONObject();
        jsonObj.accumulate("Servers", null);// 允许value为null
        jsonObj.accumulate("Servers", "Tomcat");
        jsonObj.put("Codes", "Java");
        jsonObj.accumulate("Codes", "JavaScript");
        // jsonObj: {"Servers":[null,"Tomcat"],"Codes":["Java","JavaScript"]}
        System.out.println("jsonObj: " + jsonObj.toString());

        /**
         * public JSONObject element(String key, Object value)
         */
        JSONObject object = new JSONObject();
        object.element("price", "500");
        object.element("price", "1000");
        // object: {"price":"1000"} 疑问: 这和put有何区别??? 说好的会调用accumulate呢???
        System.out.println("object: " + object.toString());
    }
}

控制台打印:

jsonObject: {"one":"first"}
jsonObject: {"one":"first","two":"second"}
jsonObject: {"one":"first","two":"cover"}
jsonObject: {"two":"cover"}
jsonObj: {"Servers":[null,"Tomcat"],"Codes":["Java","JavaScript"]}
object: {"price":"1000"}

P.S. 网上的帖子对 element 方法介绍都是如下:

Put a key/value pair in the JSONObject. If the value is null, then the key will be removed from the JSONObject if it is
present. If there is a previous value assigned to the key, it will call accumulate.

翻译:

public JSONObject element (String key, Object value) 将键/值对放到这个JSONObject对象里面。如果当前value为空(null),那么如果这个key存在的话,这个key就会移除掉。如果这
个key之前有value值,那么此方法会调用accumulate()方法。

但是,亲测,却不尽然,结果并不是如上的预期的效果。所以就纳闷了,网上关于这样的帖子好多,都是一样的,想必是直接 CV 大法,不过我就是很纳闷,为何 element  不是文档说的那样?!

时间: 2024-07-30 20:16:16

net.sf.json - put、accumulate、element的相关文章

Java - net.sf.json 之 put、accumulate、element 实践与疑问

net.sf.json net.sf.json 需要的 jar: 注意版本,个别版本之间会冲突. Java 代码: package com.code.ggsddu; import net.sf.json.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import java.util.ArrayList; import java.util.HashMap; import java.util.List; impo

JSON中put、accumulate、elemate的区别

JSONObject.put():将value映射到key下,加入在JSONObject对象之前存在一个value存在key下,当前的value会替换之前的value. JSONObject.accumulate():累计这个vlue到这个key下,这个方法同elemate()方法类似,特殊的是,如果当前已存在一个value在这个key下,那么一个JSONArray将会存储在这个key下,来保留所有累计的value,如果已存在一个JSONArray,那么当前的value就会添加到这个JSONAr

java转换xml、list、map和json

java转换xml.list.map和json [java] view plaincopy package com.shine.framework.core.util; import java.io.ByteArrayOutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; i

xml、bean、json互转工具,可直接CV就用

1.jar包 <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib

java中使用fastjson、jackson、json-lib解析JSON-------------------妈妈再也不用担心JSON解析

1.fastjson引入包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.16</version></dependency> JSON字符串转JSONObject/JSONArrayJSONObject jsonObject = JSONObject.parseObject(js

Python自动化运维之10、模块之json、pickle、XML、PyYAML、configparser、shutil

序列化 Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load pickle模块提供了四个功能:dumps.dump.loads.load json模块 # json()将字符串形式的列表或字典转换为list或dict类型,json是所有语言相互通信的方式# 注意外层字符形式

json、javaBean、xml互转的几种工具介绍

Json.javaBean.xml互转的几种工具介绍 工作中经常要用到Json.JavaBean.Xml之间的相互转换,用到了很多种方式,这里做下总结,以供参考. 现在主流的转换工具有json-lib.jackson.fastjson等,我为大家一一做简单介绍,主要还是以代码形式贴出如何简单应用这些工具的,更多高级功能还需大家深入研究. 首先是json-lib,算是很早的转换工具了,用的人很多,说实在现在完全不适合了,缺点比较多,依赖的第三方实在是比较多,效率低下,API也比较繁琐,说他纯粹是因

【python】-- json &amp; pickle、xml、requests、hashlib、shelve、shutil、configparser、subprocess

json & pickle Python中用于序列化的两个模块 json     用于[字符串]和 [python基本数据类型] 间进行转换 pickle   用于[python特有的类型] 和 [python基本数据类型]间进行转换 Json模块提供了四个功能:dumps.dump.loads.load 1.dumps序列化和loads反序列化 dumps()序列化 import json #导入json模块 info = { 'name':"zhangqigao", &qu

json学习初体验--第三者jar包实现bean、List、map创json格式

1.的需要jar包裹json-lib.jar 下载链接: http://sourceforge.net/projects/json-lib/files/json-lib/ 此包还须要下面的依赖包, commons-lang.jar commons-beanutils .jar commons-collections.jar commons-logging.jar ezmorph.jar 2.创建javabean文件,以以下的为例: <span style="font-size:18px;&