需要将下面的JSON对象转换为字符串JAVA
需要将下面的JSON对象转换为字符串JAVA,如何处理嵌套数组。下面是JSON对象:需要将下面的JSON对象转换为字符串JAVA,java,arrays,json,jsonschema,Java,Arrays,Json,Jsonschema,需要将下面的JSON对象转换为字符串JAVA,如何处理嵌套数组。下面是JSON对象: { "url": "https://www.apple.com", "defer_time": 5, "email": true, "mac_res": "1024x768", "win_res": "1366X768", "smart_scroll": true, "layout": "portrait", "configs": { "windows 10": {
{
"url": "https://www.apple.com",
"defer_time": 5,
"email": true,
"mac_res": "1024x768",
"win_res": "1366X768",
"smart_scroll": true,
"layout": "portrait",
"configs": {
"windows 10": {
"chrome": [
"76",
"75"
],
"firefox": [
"67",
"66"
]
},
"macos mojave": {
"chrome": [
"76",
"75"
],
"firefox": [
"67",
"66"
]
}
}
}
目前,我正在使用JSONObject和JSONArray来编写代码,但无法使其适合嵌套数组
任何帮助都将不胜感激,非常感谢 我希望这段代码能帮你清除一切。首先要读取json文件,您可以使用stream打开它,它们直接将stream传递给JSONObject,因为它有用于执行此技巧的构造函数,或者将文件中的字符串附加到StringBuilder,然后将StringBuilder传递给string传递给JSONObject
public static void main(String[] args) {
try(BufferedReader fileReader = new BufferedReader(new FileReader("test.json"))){
String line="";
StringBuilder stringBuilder = new StringBuilder();
while ((line = fileReader.readLine()) !=null){
stringBuilder.append(line);
}
JSONObject jsonObject = new JSONObject(stringBuilder.toString());
// to add single values yo your array.
// you can do something like this
JSONObject config = jsonObject.getJSONObject("configs");
JSONObject macos_mojave = config.getJSONObject("macos mojave");
JSONArray jsonArray = macos_mojave.getJSONArray("chrome"); // this way you will reach the array
jsonArray.put("77"); // then you can add them new values
jsonArray.put("78");
System.out.println(jsonArray.toList()); //will print your array content
} catch (IOException e){
e.printStackTrace();
}
JSONArray jsonArray = new JSONArray(); // this is what you call single values, it is array
jsonArray.put(75);
jsonArray.put(76);
JSONObject jsonObject1 = new JSONObject();
jsonObject1.put("Something", jsonArray);
}
您可以像这样将它们写回文件
//if you write them back to file you will see that 77 and 78 was added to chrome array (single values as you call them)
try(FileWriter fileWriter = new FileWriter("test.json")){
fileWriter.write(jsonObject.toString(5));
}catch (IOException ignore){
}
打开test.json文件后,将显示下一个结果
{
"win_res": "1366X768",
"layout": "portrait",
"configs": {
"windows 10": {
"chrome": [
"76",
"75"
],
"firefox": [
"67",
"66"
]
},
"macos mojave": {
"chrome": [
"76",
"75",
"77",
"78"
],
"firefox": [
"67",
"66"
]
}
},
"smart_scroll": true,
"defer_time": 5,
"mac_res": "1024x768",
"url": "https://www.apple.com",
"email": true
}
如您所见,77和78被添加到“chrome”JSONArray中。文件将不会跟踪顺序,因为它在幕后使用HashMap 尝试将字符串解析为示例Java对象。然后调用toString方法
ObjectMapper mapper = newObjectMapper();
String jsonInString = "your string";
//JSON from String to Object
Example yourExample = mapper.readValue(jsonInString, Example.class);
yourExample.toString();
-----------------------------------com.example.Configs.java-----------------------------------
package com.example;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"windows 10",
"macos mojave"
})
public class Configs {
@JsonProperty("windows 10")
private Windows10 windows10;
@JsonProperty("macos mojave")
private MacosMojave macosMojave;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("windows 10")
public Windows10 getWindows10() {
return windows10;
}
@JsonProperty("windows 10")
public void setWindows10(Windows10 windows10) {
this.windows10 = windows10;
}
@JsonProperty("macos mojave")
public MacosMojave getMacosMojave() {
return macosMojave;
}
@JsonProperty("macos mojave")
public void setMacosMojave(MacosMojave macosMojave) {
this.macosMojave = macosMojave;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
@Override
public String toString() {
return new ToStringBuilder(this).append("windows10", windows10).append("macosMojave", macosMojave).append("additionalProperties", additionalProperties).toString();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(windows10).append(additionalProperties).append(macosMojave).toHashCode();
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if ((other instanceof Configs) == false) {
return false;
}
Configs rhs = ((Configs) other);
return new EqualsBuilder().append(windows10, rhs.windows10).append(additionalProperties, rhs.additionalProperties).append(macosMojave, rhs.macosMojave).isEquals();
}
}
-----------------------------------com.example.Example.java-----------------------------------
package com.example;
import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"url",
"defer_time",
"email",
"mac_res",
"win_res",
"smart_scroll",
"layout",
"configs"
})
public class Example {
@JsonProperty("url")
private String url;
@JsonProperty("defer_time")
private long deferTime;
@JsonProperty("email")
private boolean email;
@JsonProperty("mac_res")
private String macRes;
@JsonProperty("win_res")
private String winRes;
@JsonProperty("smart_scroll")
private boolean smartScroll;
@JsonProperty("layout")
private String layout;
@JsonProperty("configs")
private Configs configs;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("url")
public String getUrl() {
return url;
}
@JsonProperty("url")
public void setUrl(String url) {
this.url = url;
}
@JsonProperty("defer_time")
public long getDeferTime() {
return deferTime;
}
@JsonProperty("defer_time")
public void setDeferTime(long deferTime) {
this.deferTime = deferTime;
}
@JsonProperty("email")
public boolean isEmail() {
return email;
}
@JsonProperty("email")
public void setEmail(boolean email) {
this.email = email;
}
@JsonProperty("mac_res")
public String getMacRes() {
return macRes;
}
@JsonProperty("mac_res")
public void setMacRes(String macRes) {
this.macRes = macRes;
}
@JsonProperty("win_res")
public String getWinRes() {
return winRes;
}
@JsonProperty("win_res")
public void setWinRes(String winRes) {
this.winRes = winRes;
}
@JsonProperty("smart_scroll")
public boolean isSmartScroll() {
return smartScroll;
}
@JsonProperty("smart_scroll")
public void setSmartScroll(boolean smartScroll) {
this.smartScroll = smartScroll;
}
@JsonProperty("layout")
public String getLayout() {
return layout;
}
@JsonProperty("layout")
public void setLayout(String layout) {
this.layout = layout;
}
@JsonProperty("configs")
public Configs getConfigs() {
return configs;
}
@JsonProperty("configs")
public void setConfigs(Configs configs) {
this.configs = configs;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
@Override
public String toString() {
return new ToStringBuilder(this).append("url", url).append("deferTime", deferTime).append("email", email).append("macRes", macRes).append("winRes", winRes).append("smartScroll", smartScroll).append("layout", layout).append("configs", configs).append("additionalProperties", additionalProperties).toString();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(configs).append(winRes).append(deferTime).append(email).append(additionalProperties).append(macRes).append(layout).append(smartScroll).append(url).toHashCode();
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if ((other instanceof Example) == false) {
return false;
}
Example rhs = ((Example) other);
return new EqualsBuilder().append(configs, rhs.configs).append(winRes, rhs.winRes).append(deferTime, rhs.deferTime).append(email, rhs.email).append(additionalProperties, rhs.additionalProperties).append(macRes, rhs.macRes).append(layout, rhs.layout).append(smartScroll, rhs.smartScroll).append(url, rhs.url).isEquals();
}
}
-----------------------------------com.example.MacosMojave.java-----------------------------------
package com.example;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"chrome",
"firefox"
})
public class MacosMojave {
@JsonProperty("chrome")
private List<String> chrome = null;
@JsonProperty("firefox")
private List<String> firefox = null;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("chrome")
public List<String> getChrome() {
return chrome;
}
@JsonProperty("chrome")
public void setChrome(List<String> chrome) {
this.chrome = chrome;
}
@JsonProperty("firefox")
public List<String> getFirefox() {
return firefox;
}
@JsonProperty("firefox")
public void setFirefox(List<String> firefox) {
this.firefox = firefox;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
@Override
public String toString() {
return new ToStringBuilder(this).append("chrome", chrome).append("firefox", firefox).append("additionalProperties", additionalProperties).toString();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(firefox).append(additionalProperties).append(chrome).toHashCode();
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if ((other instanceof MacosMojave) == false) {
return false;
}
MacosMojave rhs = ((MacosMojave) other);
return new EqualsBuilder().append(firefox, rhs.firefox).append(additionalProperties, rhs.additionalProperties).append(chrome, rhs.chrome).isEquals();
}
}
-----------------------------------com.example.Windows10.java-----------------------------------
package com.example;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"chrome",
"firefox"
})
public class Windows10 {
@JsonProperty("chrome")
private List<String> chrome = null;
@JsonProperty("firefox")
private List<String> firefox = null;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();
@JsonProperty("chrome")
public List<String> getChrome() {
return chrome;
}
@JsonProperty("chrome")
public void setChrome(List<String> chrome) {
this.chrome = chrome;
}
@JsonProperty("firefox")
public List<String> getFirefox() {
return firefox;
}
@JsonProperty("firefox")
public void setFirefox(List<String> firefox) {
this.firefox = firefox;
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
@Override
public String toString() {
return new ToStringBuilder(this).append("chrome", chrome).append("firefox", firefox).append("additionalProperties", additionalProperties).toString();
}
@Override
public int hashCode() {
return new HashCodeBuilder().append(firefox).append(additionalProperties).append(chrome).toHashCode();
}
@Override
public boolean equals(Object other) {
if (other == this) {
return true;
}
if ((other instanceof Windows10) == false) {
return false;
}
Windows10 rhs = ((Windows10) other);
return new EqualsBuilder().append(firefox, rhs.firefox).append(additionalProperties, rhs.additionalProperties).append(chrome, rhs.chrome).isEquals();
}
}
ObjectMapper-mapper=newObjectMapper();
String jsonInString=“您的字符串”;
//从字符串到对象的JSON
示例yourExample=mapper.readValue(jsonInString,Example.class);
yourExample.toString();
-----------------------------------com.example.Configs.java-----------------------------------
包com.example;
导入java.util.HashMap;
导入java.util.Map;
导入com.fasterxml.jackson.annotation.JsonAnyGetter;
导入com.fasterxml.jackson.annotation.JsonAnySetter;
导入com.fasterxml.jackson.annotation.JsonIgnore;
导入com.fasterxml.jackson.annotation.JsonInclude;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.annotation.JsonPropertyOrder;
导入org.apache.commons.lang.builder.EqualsBuilder;
导入org.apache.commons.lang.builder.HashCodeBuilder;
导入org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
“windows 10”,
“马科斯·莫哈韦”
})
公共类配置{
@JsonProperty(“windows 10”)
私人视窗10视窗10;
@JsonProperty(“macos mojave”)
私人麦克斯莫哈韦;
@杰索尼奥雷
私有映射additionalProperties=new HashMap();
@JsonProperty(“windows 10”)
公共窗口10 getWindows10(){
返回窗口10;
}
@JsonProperty(“windows 10”)
公共无效设置Windows10(Windows10 Windows10){
this.windows10=windows10;
}
@JsonProperty(“macos mojave”)
公共MacosMojave getMacosMojave(){
返回麦克斯莫哈韦;
}
@JsonProperty(“macos mojave”)
公共无效设置MacosMojave(MacosMojave MacosMojave){
this.macosMojave=macosMojave;
}
@JsonAnyGetter
公共映射getAdditionalProperties(){
返回此。附加属性;
}
@JSONANYSETER
public void setAdditionalProperty(字符串名称、对象值){
this.additionalProperties.put(名称、值);
}
@凌驾
公共字符串toString(){
返回新的toString Builder(this).append(“windows10”,windows10.append(“macosMojave”,macosMojave).append(“additionalProperties”,additionalProperties).toString();
}
@凌驾
公共int hashCode(){
返回新的HashCodeBuilder().append(windows10).append(additionalProperties).append(macosMojave).toHashCode();
}
@凌驾
公共布尔等于(对象其他){
如果(其他==此){
返回true;
}
if((配置的其他实例)=false){
返回false;
}
配置rhs=((配置)其他);
返回新的equalBuilder().append(windows10,rhs.windows10).append(additionalProperties,rhs.additionalProperties).append(macosMojave,rhs.macosMojave).isEquals();
}
}
-----------------------------------com.example.example.java-----------------------------------
包com.example;
导入java.util.HashMap;
导入java.util.Map;
导入com.fasterxml.jackson.annotation.JsonAnyGetter;
导入com.fasterxml.jackson.annotation.JsonAnySetter;
导入com.fasterxml.jackson.annotation.JsonIgnore;
导入com.fasterxml.jackson.annotation.JsonInclude;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.annotation.JsonPropertyOrder;
导入org.apache.commons.lang.builder.EqualsBuilder;
导入org.apache.commons.lang.builder.HashCodeBuilder;
导入org.apache.commons.lang.builder.ToStringBuilder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
“网址”,
“推迟时间”,
“电子邮件”,
“mac_res”,
“赢”,
“智能滚动”,
“布局”,
“配置”
})
公开课范例{
@JsonProperty(“url”)
私有字符串url;
@JsonProperty(“延迟时间”)
私生活时间长;
@JsonProperty(“电子邮件”)
私人电子邮件;
@JsonProperty(“mac_res”)
私人字符串macRes;
@JsonProperty(“win_res”)
私有字符串winRes;
@JsonProperty(“智能滚动”)
私有布尔智能滚动;
@JsonProperty(“布局”)
私有字符串布局;
@JsonProperty(“配置”)
私有配置;
@杰索尼奥雷
私有映射additionalProperties=new HashMap();
@JsonProperty(“url”)
公共字符串getUrl(){
返回url;
}
@JsonProperty(“url”)
公共void setUrl(字符串url){
this.url=url;
}
@JsonProperty(“延迟时间”)
公共长时间(){
返回时间;
}
@JsonProperty(“延迟时间”)
公共无效设置延迟时间(长延迟时间){
this.deferTime=延迟时间;
}
@JsonProperty(“电子邮件”)
公共邮件(){
回复邮件;
}
@JsonProperty(“电子邮件”)
公共电子邮件(布尔电子邮件){
this.email=电子邮件;
}
@JsonProperty(“mac_res”)
公共字符串getMacRes(){
返回macRes;
}
@JsonProperty(“mac_res”)
公共void setMacRes(字符串macRes){
this.macRes=macRes;
}
@JsonProperty(“win_res”)
公共字符串getWinRes(){
返回winRes;
}
@JsonProperty(“win_res”)
公共void setWinRes(字符串winRes){
this.winRes=winRes;
}
@JsonProperty(“智能滚动”)
公共布尔值{
返回smartScroll;
}
@JsonProperty(“智能滚动”)
公共无效设置smartScroll(布尔智能滚动){
this.smartScroll=smartScroll;
}
@JsonProperty(“布局”)
公共字符串getLayout(){
返回布局;
}
@JsonProperty(“布局”)
公共void setLayout(字符串布局){
this.layout=布局;
}
@JsonProperty(“配置”)
公共配置getConfigs(){
返回配置;
}
@JsonProperty(“配置”)
公共void setConfigs(配置
import java.util.ArrayList;
import org.bson.Document;
Document root= new Document();
Document rootConfigs = new Document();
Document rootConfigsWindows10 = new Document();
ArrayList rootConfigsWindows10Chrome= new ArrayList();
ArrayList rootConfigsWindows10Firefox= new ArrayList();
Document rootConfigsMacosmojave = new Document();
ArrayList rootConfigsMacosmojaveChrome= new ArrayList();
ArrayList rootConfigsMacosmojaveFirefox= new ArrayList();
root.append("url","https://www.apple.com");
root.append("defer_time",5);
root.append("email",true);
root.append("mac_res","1024x768");
root.append("win_res","1366X768");
root.append("smart_scroll",true);
root.append("layout","portrait");
rootConfigsWindows10Chrome.add("76");
rootConfigsWindows10Chrome.add("75");
rootConfigsWindows10Firefox.add("67");
rootConfigsWindows10Firefox.add("66");
rootConfigsMacosmojaveChrome.add("76");
rootConfigsMacosmojaveChrome.add("75");
rootConfigsMacosmojaveFirefox.add("67");
rootConfigsMacosmojaveFirefox.add("66");
if (!rootConfigsWindows10Chrome.isEmpty()){
rootConfigsWindows10.append("chrome",rootConfigsWindows10Chrome);
}
if (!rootConfigsWindows10Firefox.isEmpty()){
rootConfigsWindows10.append("firefox",rootConfigsWindows10Firefox);
}
if (!rootConfigsWindows10.isEmpty()){
rootConfigs.append("windows 10",rootConfigsWindows10);
}
if (!rootConfigsMacosmojaveChrome.isEmpty()){
rootConfigsMacosmojave.append("chrome",rootConfigsMacosmojaveChrome);
}
if (!rootConfigsMacosmojaveFirefox.isEmpty()){
rootConfigsMacosmojave.append("firefox",rootConfigsMacosmojaveFirefox);
}
if (!rootConfigsMacosmojave.isEmpty()){
rootConfigs.append("macos mojave",rootConfigsMacosmojave);
}
if (!rootConfigs.isEmpty()){
root.append("configs",rootConfigs);
}
System.out.println(root.toJson());