Как обновить значения JSON с помощью объекта json path / json - PullRequest
0 голосов
/ 16 мая 2019

Я прочитал на этой странице, что мы можем установить значения для JSON

Обновить элементы в JSONObject

public static JSONObject function(JSONObject obj, String keyMain,String valueMain, String newValue) throws Exception {
    // We need to know keys of Jsonobject
    JSONObject json = new JSONObject()
    Iterator iterator = obj.keys();
    String key = null;
    while (iterator.hasNext()) {
        key = (String) iterator.next();
        // if object is just string we change value in key
        if ((obj.optJSONArray(key)==null) && (obj.optJSONObject(key)==null)) {
            if ((key.equals(keyMain)) && (obj.get(key).toString().equals(valueMain))) {
                // put new value
                obj.put(key, newValue);
                return obj;
            }
        }

        // if it's jsonobject
        if (obj.optJSONObject(key) != null) {
            function(obj.getJSONObject(key), keyMain, valueMain, newValue);
        }

        // if it's jsonarray
        if (obj.optJSONArray(key) != null) {
            JSONArray jArray = obj.getJSONArray(key);
            for (int i=0;i<jArray.length();i++) {
                    function(jArray.getJSONObject(i), keyMain, valueMain, newValue);
            }
        }
    }
    return obj;
}

Но я не могу обновитьуникальное значение для отдельного тега JSON (так как у нас есть повторяющиеся имена, например: цена), которое выглядит следующим образом. Когда я пытаюсь использовать приведенный выше код, он обновляет одно и то же значение для всех ценников, может кто-нибудь помочь мне в этом.

Я хочу обновить уникальное значение, например, цена 9,95, 10,95,13,15

{
    "store": {
        "book": [
            {
                "category": "reference",
                "author": "XXXXXXXXXXXXXXXXX",
                "title": "Sayings of the Century",
                "price": 8.95
            },
            {
                "category": "fiction",
                "author": "Evelyn Waugh",
                "title": "Sword of Honour",
                "price": XXXXXXXXXXXXXXXXXXXXX
            },
            {
                "category": "fiction",
                "author": "Herman Melville",
                "title": "Moby Dick",
                "isbn": "0-553-21311-3",
                "price": 8.99
            },
            {
                "category": "fiction",
                "author": "J. R. R. Tolkien",
                "title": "The Lord of the Rings",
                "isbn": "0-395-19395-8",
                "price": 22.99
            }
        ],
        "bicycle": {
            "color": "red",
            "price": 19.95
        }
    },
    "expensive": 10
}

выше. Я хочу обновить цену индивидуально для каждого тега, как это сделать?

...