Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要将下面的JSON对象转换为字符串JAVA_Java_Arrays_Json_Jsonschema - Fatal编程技术网

需要将下面的JSON对象转换为字符串JAVA

需要将下面的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": {

需要将下面的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": {
      "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());