Как программно добавить новое поле в мой объект json?

#json

Вопрос:

у меня есть данные json в файле . Я хотел бы добавить новое поле к каждому объекту в моем массиве json. например, если мой файл

 [
  {
    "inventory": "SMS",
    "flight_name": "Very Very long long flight"
  },
  {
    "inventory": "SMS",
    "flight_name": "Very Very long long flight"
  },
  {
    "inventory": "MMS",
    "flight_name": "Short Flight"
  }
]
 

Я хотел бы добавить новое поле created_by. ниже показано, как я хочу преобразовать свои данные json.

 [
  {
    "inventory": "SMS",
    "flight_name": "Very Very long long flight",
    "created_by": "Felix"
  },
  {
    "inventory": "SMS",
    "flight_name": "Very Very long long flight",
    "created_by": "Felix"
  },
  {
    "inventory": "MMS",
    "flight_name": "Short Flight",
    "created_by": "Felix"
  }
]
 

На самом деле мой файл большой, поэтому я не могу добавить его вручную . Как я могу программно добавить новое поле .или если доступен какой-либо онлайн-инструмент, пожалуйста, дайте мне знать

Огромное спасибо!

Комментарии:

1. Программно изменить с помощью какого языка (языков)? Что вы пробовали? Что не сработало? ТАК что это не служба кодирования, поэтому сначала сделайте честную попытку.

Ответ №1:

В аналогичном случае я бы лично открыл файл с помощью Sublime Text и пошел в Поиск > Переместить, а затем использовал небольшое регулярное выражение :

    "flight_name": "[a-z ] "
 

Перенесите на :

 "flight_name": "$1", n "created_by": "Felix"
 

Регулярное выражение возвышенного текста

Предполагая, что у вас есть только один файл для обновления, это для меня самое быстрое и простое решение !

Ответ №2:

 package test.riot.json.json;

import java.io.File;
import java.io.FileReader;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonElement;

/**
 * Hello world!
 *
 */
public class App {
    public static void main(String[] args) {

        GsonBuilder builder = new GsonBuilder();
        Gson gson = builder.create();

        File file = new File("/Users/kannan/openmindcvs/json/src/main/java/test/riot/json/json/json.txt");

        try (FileReader fileReader = new FileReader(file)) {

            char[] chars = new char[(int) file.length()];

            fileReader.read(chars);

            String fileContent = new String(chars);

            JsonElement element = gson.toJsonTree(fileContent);

            List<com.google.gson.internal.LinkedTreeMap> jsonObjectsArr = gson.fromJson(element.getAsString(),
                    List.class);

            jsonObjectsArr.forEach(e -> {
                e.putIfAbsent("created_by", "0c9d6015-f45f-4a90-a58c-8c99384aa40");
                e.putIfAbsent("first_name", "Campaign");
                e.putIfAbsent("last_name", "Manager");

            }

            );

            System.out.println(gson.toJson(jsonObjectsArr));

        } catch (Exception e) {
            System.err.println(e);
        }

    }
}