Java 在这种情况下,如何更新JSON

Java 在这种情况下,如何更新JSON,java,json,Java,Json,我有一个JSON对象,其键值对为{“Name”:“KEY1”} 我有另一个JSON作为 { "ServiceTax": 133.24263, "VAT": 23 } 我如何添加前面带有{“Name”:“KEY1”}的JSON,以及这两个值ServiceTax和VAT 所以JSON看起来像 { "NAME" : "KEY1" "ServiceTax": 133.24263, "VAT": 23 } 这里的问题是,服务税和增值税的名称不是固定的,可以是任何

我有一个JSON对象,其键值对为
{“Name”:“KEY1”}

我有另一个JSON作为

{
    "ServiceTax": 133.24263,
    "VAT": 23
}
我如何添加前面带有{“Name”:“KEY1”}的JSON,以及这两个值ServiceTax和VAT

所以JSON看起来像

{
    "NAME" : "KEY1"
    "ServiceTax": 133.24263,
    "VAT": 23
}
这里的问题是,服务税和增值税的名称不是固定的,可以是任何名称

这是我的节目

import java.text.DecimalFormat;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class Test {

    public static void main(String args[]) throws JSONException {

        String json = "{\r\n" + 
                "    \"ServiceTax\": 133.24263,\r\n" + 
                "    \"VAT\": 23\r\n" + 
                "}";

        Map < String, LinkedList < JSONObject >> vendorOrdersMap = new LinkedHashMap < String, LinkedList < JSONObject >> ();

        JSONObject json_obj_for_key1 = new JSONObject();  json_obj_for_key1.put("Name", "KEY1");
        JSONObject json_obj_for_key2 = new JSONObject();  json_obj_for_key2.put("Name", "KEY2"); 

        LinkedList list1 = new LinkedList(); list1.add(json_obj_for_key1);

        LinkedList list2 = new LinkedList(); list2.add(json_obj_for_key2);

        vendorOrdersMap.put("ONE", list1);
        vendorOrdersMap.put("TWO", list2);

        for (Map.Entry < String, LinkedList < JSONObject >> entry: vendorOrdersMap.entrySet())
        {
            String key = entry.getKey();
            LinkedList < JSONObject > json_list = entry.getValue();

            for (JSONObject json_data: json_list)
            {
                // 
            }
        }
    }
}
导入java.text.DecimalFormat;
导入java.util.Collections;
导入java.util.HashMap;
导入java.util.LinkedHashMap;
导入java.util.LinkedList;
导入java.util.Map;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
公开课考试{
公共静态void main(字符串args[])抛出JSONException{
字符串json=“{\r\n”+
“\“服务税\”:133.24263\r\n”+
“\“VAT\”:23\r\n”+
"}";
Map>供应商订单Map=newlinkedhashmap>();
JSONObject json_obj_for_key1=new JSONObject();json_obj_for_key1.put(“Name”,“key1”);
JSONObject json_obj_for_key2=new JSONObject();json_obj_for_key2.put(“Name”,“key2”);
LinkedList list1=new LinkedList();list1.add(json_obj_表示_key1);
LinkedList list2=new LinkedList();list2.add(用于键2的json_obj_);
供应商订单映射。放置(“一”,列表1);
供应商订单地图。放置(“两个”,列表2);
对于(Map.Entry>条目:vendorOrdersMap.entrySet())
{
String key=entry.getKey();
LinkedListjson_list=entry.getValue();
for(JSONObject json_数据:json_列表)
{
// 
}
}
}
}
选项1:

//set up your keys/key object(s) however you prefer
JSONObject sourceObj = new JSONObject();
sourceObj.put("NAME", "KEY<n>");

JSONObject destObj = new JSONObject(json);  //parse the json
destObj.put("NAME", sourceObj.get("NAME"));  //merge in the field from the source object
//按您的喜好设置密钥/密钥对象
JSONObject sourceObj=新的JSONObject();
sourceObj.put(“名称”、“键”);
JSONObject destObj=新的JSONObject(json)//解析json
destObj.put(“名称”),sourceObj.get(“名称”)//从源对象在字段中合并
备选案文2:

//function to merge the values in two JSON objects into a single resulting
//object; this will return a new object instance that can be manipulated 
//independently of the source object(s), or null if both source objects are 
//null.
//
//Note that fields in 'obj2' take priority if a collision occurs.
public static JSONObject mergeJson(JSONObject obj1, JSONObject obj2) throws JSONException {
    //cover the easy cases
    if (obj1 == null && obj2 == null) {
        return null;
    }
    if (obj1 == null) {
        return new JSONObject(obj2.toString());
    }
    if (obj2 == null) {
        return new JSONObject(obj1.toString());
    }

    //merge the two inputs
    JSONObject result = new JSONObject();

    Iterator<String> keys = obj1.keys();
    while (keys.hasNext()) {
        String key = keys.next();
        result.put(key, obj1.get(key));
    }

    keys = obj2.keys();
    while (keys.hasNext()) {
        String key = keys.next();
        result.put(key, obj2.get(key));
    }

    return result;
}

//then elsewhere in your code...

//set up your keys/key object(s) however you prefer
JSONObject obj1 = new JSONObject();
obj1.put("NAME", "KEY<n>");

JSONObject obj2 = new JSONObject(json);  //parse the json
JSONObject destObj = mergeJson(obj1, obj2); //merge the two objects
//将两个JSON对象中的值合并为一个结果
//对象;这将返回一个可以操作的新对象实例
//独立于源对象,如果两个源对象都是空的,则为空
//空。
//
//请注意,如果发生冲突,“obj2”中的字段优先。
公共静态JSONObject mergeJson(JSONObject obj1、JSONObject obj2)抛出JSONException{
//盖上容易的箱子
如果(obj1==null&&obj2==null){
返回null;
}
如果(obj1==null){
返回新的JSONObject(obj2.toString());
}
如果(obj2==null){
返回新的JSONObject(obj1.toString());
}
//合并两个输入
JSONObject结果=新建JSONObject();
迭代器keys=obj1.keys();
while(keys.hasNext()){
String key=keys.next();
result.put(key,obj1.get(key));
}
keys=obj2.keys();
while(keys.hasNext()){
String key=keys.next();
result.put(key,obj2.get(key));
}
返回结果;
}
//然后在代码的其他地方。。。
//按您喜欢的方式设置密钥/密钥对象
JSONObject obj1=新的JSONObject();
obj1.put(“名称”、“键”);
JSONObject obj2=新的JSONObject(json)//解析json
JSONObject destObj=mergeJson(obj1,obj2)//合并两个对象

带有变量键的JSON真的是字符串还是JSONObject?您是否已经使用了
org.JSON.*
类?如果没有,您可能会发现或更易于使用。