Настройте патч Json в соответствии с требованиями - PullRequest
0 голосов
/ 07 января 2019

Я использую библиотеку Json Patch для выполнения операции Patch с использованием REST. Теперь у меня есть следующий документ JSON:

{
    "id":1,
    "ref":{"r1":1,"r2":2},  // header level
    "child":[
                {
                    "childId":1,
                    "ref":{"cc1":1,"cc2":2}   // line level
                },
                {
                    "childId":2,
                    "ref":{"cc3":2}    // line level
                }
            ]
}

Теперь Согласно Документу Json Patch мы на уровне заголовка можем обновить ref r1 , используя следующий путь /ref/r1.

Сейчас я пытаюсь выполнить операцию на уровне строки child ref . Поскольку child - это массив, я могу использовать путь /child/0/ref/cc1. Но, как видно из path , я также должен указать индекс, который в предыдущем случае равен 0.

Теперь для потребителей API запросить указание индекса массива становится затруднительным. Так есть ли способ настроить патч json таким образом, чтобы мы могли обойти требование индекса или как можно справиться с этим сценарием?

1 Ответ

0 голосов
/ 08 января 2019

Я не эксперт в JSON-Patch, я только что прочитал об этом. Из того, что я понял, самая важная часть - предоставить пользователям API доступ к вашему JSON без указания индекса,

Я думаю, hashmap поможет в этом случае, получив индекс каждого элемента и сгенерировав для него определенный идентификатор, затем вы можете сохранить их в списке hashmap , каждый индекс имеет свой собственный идентификатор .

образец:

HashMap<String, String> elementIndex = new HashMap<[UUID], [elementIndex]>(); вы можете выбрать любой тип данных, какой вы хотите, не обязательно String

В данном случае не имеет значения, какой порядковый номер, все дело в фиксированном UUID. Таким образом, путь будет в этом случае /child/{UUID}/ref/cc1 также, когда вы получите путь, вы можете получить доступ к UUID и заменить его на elementIndex, теперь у вас есть правильный путь, который /child/0/ref/cc1

и если вы хотите знать, как передать динамическое значение в объект JSON, есть несколько способов сделать это, этот вопрос поможет:

Как передать динамическое значение в строку JSON , - Преобразовать объект JSONObject в строку до -

ПРИМЕЧАНИЕ : нет необходимости заменять его индексом, вы можете сделать это так, как вам нравится.

И я считаю, что есть лучшие ответы, если кто-то знает больше о JSON-патче. Я надеюсь, что это было полезно, или, по крайней мере, даст вам представление о том, как ее решить.

...