使用Jackson将JSON属性文件转换为JSON
问题描述:
我想将具有嵌套对象的Java属性文件转换为JSON。我跟着一个例子,我发现here,但我不能得到它的工作。使用Jackson将JSON属性文件转换为JSON
例如,给定:
objectA.version=1.0
objectA.hostname=192.168.0.11
objectA.port=9989
objectB.hostname=10.0.2.15
objectB.port=9998
我想:
{
“objectA” : {
"version” : "1.0"
"host” : “192.168.0.11”,
"port" : 9989
},
“objectB” : {
"host” : “10.0.2.15”,
"port" : 9998
}
}
这是我到目前为止有:
static class Endpoint
{
@JsonProperty("objectA")
public ObjectA objectA;
@JsonProperty("objectB")
public ObjectB objectB;
}
static class ObjectA
{
public String hostname;
public String port;
public String version;
}
static class ObjectB
{
public String hostname;
public String port;
}
try (InputStream input = getClass().getClassLoader().getResourceAsStream("file.properties"))
{
JavaPropsMapper mapper = new JavaPropsMapper();
Endpoint host = mapper.readValue(input, Endpoint.class);
String asText = mapper.writeValueAsString(host);
System.out.println(asText);
}
输出看起来是这样的:
objectA.version=1.0
objectA.hostname=192.168.0.11
objectA.port=9989
objectB.hostname=10.0.2.15
objectB.port=9998
答
我想通了。
try (InputStream input = getClass().getClassLoader().getResourceAsStream("file.properties"))
{
JavaPropsMapper mapper = new JavaPropsMapper();
Endpoint host = mapper.readValue(input, Endpoint.class);
// String asText = mapper.writeValueAsString(host);
// add this
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String asText = ow.writeValueAsString(host);
//
System.out.println(asText);
}
如果您只是想打印带括号的属性文件的JSON结构,而不是,可以使用ObjectMapper。看到这个参考:https://www.mkyong.com/java/how-to-enable-pretty-print-json-output-jackson/ – suguspnk
@suguspnk这不是我想做的。我想用一个嵌套(不平坦)的结构将属性文件转换为JSON。 – ksl
现在我很困惑。 @。@ – suguspnk