#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);
}
}
}