2016-07-26 7 views
-2

Я новичок в java и json и поэтому искал вашу помощь. -i хочу создать новый json-файл, если несколько значений должны быть взяты из шаблона (json) .lets говорят, что у меня есть json-шаблон, как указано ниже. Я хочу извлечь все, что есть в шаговом массиве .i.e step1 и step2. , и это значение должно быть помещено в новый json.json parsing using jackson

проблема, с которой я столкнулся 1) как создать вложенный json с помощью jackson. Я использую

JsonFactory factory = new JsonFactory(); 
JsonGenerator generator = factory.createGenerator(new File("data/output.json"), JsonEncoding.UTF8); 

generator.writeStartObject(); 
generator.writeObjectField("ABC","abc"); 
generator.writeEndObject(); 
generator.close(); 

но это создаст простой json, а не вложенный json. Я хочу вложенный json.

2) я хочу, чтобы извлечь шаг массив и передать вновь созданный JSON

я проверил для этого в StackOverflow, нашел так много ответов, но те не помогли мне. Надежда some1 мне поможет.

JSON:

{ 
    "abc": "ryhey0", 
    "shgsh": "jsdj", 
    "fgjf": [ 
    { 
     "type": "int", 
     "steps": [ 
     { 
      "type": "step1", 
      "outputTypes": "int" 
     }, 
     { 
      "type": "step2", 
      "outputTypes": "bool" 
     } 
     ] 
    } 
    ] 
} 
+2

Просьба уточнить * создать вложенный json *. –

+0

Создайте вложенные json-средства, я хочу сгенерировать новый json (он вложен как json template shon выше) с помощью json – user6639252

+0

Вы имеете в виду «nested json» = nested json _objects_? Что-то вроде массивов объектов в 'fgjf' и' steps'? – Thomas

ответ

0

Примечание: Ваш вопрос не совсем ясен, и его трудно обеспечить вы с окончательным ответом, пока не получите какое-то разъяснение относительно того, чего вы хотите достичь. Тем не менее, вот некоторые фрагменты кода, которые вы можете найти полезным:

Добавление нового свойства в формате JSON:

ObjectMapper mapper = new ObjectMapper(); 
JsonNode root = mapper.readTree(new File("/path/to/your/json/file")); 

((ObjectNode) root).put("new-property", "some-value"); 
System.out.println(root); 

Получение steps узла:

ObjectMapper mapper = new ObjectMapper(); 
JsonNode root = mapper.readTree(new File("/path/to/your/json/file")); 

JsonNode steps = root.get("fgjf").get(0).get("steps"); 
System.out.println(steps); 

Получение steps узла и добавив его в новый JSON:

ObjectMapper mapper = new ObjectMapper(); 
JsonNode root = mapper.readTree(new File("/path/to/your/json/file")); 

JsonNode steps = root.get("fgjf").get(0).get("steps"); 

ObjectNode newRoot = mapper.createObjectNode(); 
newRoot.set("steps", steps); 
System.out.println(newRoot); 
+0

Здесь мы передаем «json string» на readTree.instead can вы скажете мне, что он будет выбирать из файла и перейти к readTree – user6639252

+0

@ user6639252 'mapper.readTree (новый файл («/path/to/your/json/file »))' –

+0

@ user6639252 Мой ответ обновлен. –

0

Примечание: Это не тестируются. Я только что продемонстрировали подходы здесь

подход 1 (Сериализация объекта JSON):

ObjectMapper mapper = new ObjectMapper(); 
ClassWithCollectionFieldsToRepresentHierarchy obj = new ClassWithCollectionFieldsToRepresentHierarchy(); 

//Serialize object to json into file 
mapper.writeValue(new File("c:\\obj.json"), obj); 

//Serialize object to json into string 
String jsonInString = mapper.writeValueAsString(obj); 

подход 2 (Использование Джексона API для создания JSON):

ObjectMapper mapper = new ObjectMapper(); 
ObjectNode objectNode1 = mapper.createObjectNode(); 
objectNode1.put("abc", "ryhey0"); 
objectNode1.put("shgsh", "jsdj"); 
ArrayNode arrayNode2 = mapper.createArrayNode(); 
ObjectNode objectNode2 = mapper.createObjectNode(); 
objectNode2.put("type", "int"); 
ArrayNode arrayNode1 = mapper.createArrayNode(); 
ObjectNode objectNode3 = mapper.createObjectNode(); 
objectNode2.put("type", "step1"); 
objectNode2.put("outputTypes", "int"); 
ObjectNode objectNode4 = mapper.createObjectNode(); 
objectNode2.put("type", "step2"); 
objectNode2.put("outputTypes", "bool"); 
arrayNode1.add(objectNode3); 
arrayNode1.add(objectNode4); 
objectNode2.put("steps", arrayNode1); 
arrayNode2.add(objectNode2); 
objectNode1.put("fgjf", arrayNode2); 
//Serialize object to json into file 
mapper.writeValue(new File("c:\\obj.json"), objectNode1); 

//Serialize object to json into string 
String jsonInString = mapper.writeValueAsString(objectNode1); 
+0

У меня есть еще один вопрос: – user6639252

+0

У меня есть папка, в которой есть «n» нет файлов «Json». Я хочу получить имя этих файлов «json», а также прокрутить эти файлы. – user6639252

+0

@ user6639252 Перестаньте задавать новые вопросы в комментариях. Если у вас есть новый вопрос, [задайте новый вопрос в нужном месте] (http://stackoverflow.com/questions/ask), и мы будем вам помогать. –