2014-10-07 5 views
3

Я работаю с файлами конфигурации, поэтому мне нужно преобразовать JSON в YAML. Например, у меня есть YAML файл:Конвертировать JSON в YAML. Parsing JSON to YAML

{ 
    "foo": "bar", 
    "baz": [ "qux","quxx"], 
    "corge": null, 
    "grault": 1, 
    "garply": true, 
    "waldo": "false", 
    "fred": "undefined", 
    "emptyArray": [], 
    "emptyObject": {}, 
    "emptyString": "" 
} 

Результат должен быть YAML:

foo: "bar" 
baz: 
    - "qux" 
    - "quxx" 
corge: null 
grault: 1 
garply: true 
waldo: "false" 
fred: "undefined" 
emptyArray: [] 
emptyObject: {} 
emptyString: "" 

Не могли бы вы мне помочь?

ответ

1

Если вам нужно конвертировать JSONObject в YAML (строку). тебе нужно. Сначала получите строку json, затем карту, после чего вы можете преобразовать в yaml. Вот код:

// this is your json object 
    JSONObject jsonobject = new JSONObject(map); 
    // get json string 
    String prettyJSONString = jsonobject.toString(4); 
    // mapping 
    Map<String,Object> map = (Map<String, Object>) yaml.load(prettyJSONString); 
    // convert to yaml string (yaml formatted string) 
    String output = yaml.dump(map2); 
+2

Не могли бы вы объяснить ваш ответ ненадолго? Где вы объявляете «jsonPrettyPrintString» –

+0

Мне очень жаль позднего ответа, я отредактировал ответ. @MurugesanEra – eabyshev

+1

Какая фреймворк/библиотека это фрагмент кода? –

-1

http://jsontoyaml.com/

этот сайт может может помочь вам. Он может быть использован в Bash, JavaScript, JavaScript (браузер только), рубин, Python, Perl , Java ..

+0

да Я видел этот сайт, но мне нужен код в Java ... – eabyshev

+0

Я против вниз голосования этого. Нет, где в вопросе упоминается как «программный путь». Таким образом, этот ответ также действителен. –

8

Вы можете преобразовать JSON в YAML его с двумя строками кода в Jackson:

import java.io.IOException; 

import com.fasterxml.jackson.core.JsonProcessingException; 
import com.fasterxml.jackson.databind.JsonNode; 
import com.fasterxml.jackson.databind.ObjectMapper; 
import com.fasterxml.jackson.dataformat.yaml.YAMLMapper; 

public class Library { 

    public String asYaml(String jsonString) throws JsonProcessingException, IOException { 
     // parse JSON 
     JsonNode jsonNodeTree = new ObjectMapper().readTree(jsonString); 
     // save it as YAML 
     String jsonAsYaml = new YAMLMapper().writeValueAsString(jsonNodeTree); 
     return jsonAsYaml; 
    } 

} 

Вам нужно будет добавить зависимости Джексон Core, DataBind и DataFormat YAML. Ниже приведен фрагмент кода для Gradle:

compile 'com.fasterxml.jackson.core:jackson-core:2.8.6' 
compile 'com.fasterxml.jackson.core:jackson-databind:2.8.6' 
compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.8.6'