Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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比较异常:Can';t在java中访问getJSONArray_Java_Json - Fatal编程技术网

Json比较异常:Can';t在java中访问getJSONArray

Json比较异常:Can';t在java中访问getJSONArray,java,json,Java,Json,我使用的代码: JSON1: { "array1": [ { "id": "1", "Name": "Xytrex Co.", "Description": "Industrial Cleaning Supply Company", "Account Number": "ABC15797531", "Address": { "Permanent": { "Street": "st.road"

我使用的代码:

 JSON1:
 {
   "array1": [
    {
      "id": "1",
      "Name": "Xytrex Co.",
      "Description": "Industrial Cleaning Supply Company",
      "Account Number": "ABC15797531",
      "Address": {
       "Permanent": {
       "Street": "st.road",
       "pin": "789723"
       },
        "Temporary": {
         "Street": "st.road",
         "pin": "789723"
       }
     }
   },

{
  "id": "2",
  "Name": "Xytrex Co.",
  "Description": "Industrial Cleaning Supply Company",
  "Account Number": "ABC15797531",
  "Address": {
    "Permanent": {
      "Street": "st.road",
      "pin": "789723"
    },
    "Temporary": {
      "pin": "789723"
    }
  }
}
 ]
 }

JSON2:

     {
   "array2": [
     {
      "id": "1",
      "Name": "Xytrex Co.",
      "Description": "Industrial Cleaning Supply Company",
      "Account Number": "ABC15797531",
      "Address": {
        "Permanent": {
          "Street": "st.road",
          "pin": "789723"
        },
        "Temporary": {
          "Street": "st.road",
          "pin": "789723"
        }
      }
   },

  {
     "id": "2",
     "Name": "Xytrex Co.",
    "Description": "Industrial Cleaning Supply Company",
    "Account Number": "ABC15797531",
        "Address": {
        "Permanent": {
        "Street": "st.road",
        "pin": "789723"
       },
       "Temporary": {
        "Street": "st.road",
        "pin": "789723"
       }
     }
   }
 ]
 }
我所期望的结果是,
id:“2”
下的
JSON1
中缺少键
Street
,或者类似的东西,它们提供了适当的信息,帮助我们识别缺少的键以执行
Junit
测试

我在IDE中得到的错误是

package com.company;

import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import org.skyscreamer.jsonassert.JSONAssert;
import org.skyscreamer.jsonassert.JSONCompareMode;
import com.google.gson.JsonParser;
import org.skyscreamer.jsonassert.JSONCompareMode;

import java.io.FileNotFoundException;
import java.io.FileReader;


public class Main {

public static void main(String[] args) throws FileNotFoundException {

    Main cmp = new Main();
    cmp.myTest();
}

public void myTest() throws FileNotFoundException {

     JsonParser Parser = new JsonParser();
     JsonObject obj1 = (JsonObject) Parser.parse(new 
 FileReader("/home/cloudera/Desktop/SampleJson/src/JSON1.json"));
    JsonArray array1 = obj1.getAsJsonArray("array1");
    JsonObject obj2 = (JsonObject)Parser.parse(new 
 FileReader("/home/cloudera/Desktop/SampleJson/src/JSON2.json"));
    JsonArray array2 = obj1.getAsJsonArray("array2");
    JSONAssert.assertEquals(array1, array2, JSONCompareMode.STRICT);
 }
}

请帮我解决这个问题。

我认为您对
JSONArray
对象类的初始化在这些行中似乎不正确

"java: cannot access org.json.JSONArray
  class file for org.json.JSONArray not found". 
您没有在方法
getAsJsonArray()
中传递正确的参数。您传递了一个硬编码值
“array1”
“array2”
,该值不是要转换为
JSONArray
的正确值


看看

我认为在这些行中,
JSONArray
对象类的初始化似乎不正确

"java: cannot access org.json.JSONArray
  class file for org.json.JSONArray not found". 
您没有在方法
getAsJsonArray()
中传递正确的参数。您传递了一个硬编码值
“array1”
“array2”
,该值不是要转换为
JSONArray
的正确值


如果您只想知道它们之间的不同,请查看一下(我将
array2
更改为
array1
以比较它们的内容)

pom文件如下所示

public class GsonClient {
public static void main(String[] args) throws Exception {
    GsonClient cmp = new GsonClient();
    cmp.myTest();
}

private void myTest() throws FileNotFoundException, JSONException {
    String json1Str = "{\n" +
            "   \"array1\": [\n" +
            "    {\n" +
            "      \"id\": \"1\",\n" +
            "      \"Name\": \"Xytrex Co.\",\n" +
            "      \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "      \"Account Number\": \"ABC15797531\",\n" +
            "      \"Address\": {\n" +
            "       \"Permanent\": {\n" +
            "       \"Street\": \"st.road\",\n" +
            "       \"pin\": \"789723\"\n" +
            "       },\n" +
            "        \"Temporary\": {\n" +
            "         \"Street\": \"st.road\",\n" +
            "         \"pin\": \"789723\"\n" +
            "       }\n" +
            "     }\n" +
            "   },\n" +
            "\n" +
            "{\n" +
            "  \"id\": \"2\",\n" +
            "  \"Name\": \"Xytrex Co.\",\n" +
            "  \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "  \"Account Number\": \"ABC15797531\",\n" +
            "  \"Address\": {\n" +
            "    \"Permanent\": {\n" +
            "      \"Street\": \"st.road\",\n" +
            "      \"pin\": \"789723\"\n" +
            "    },\n" +
            "    \"Temporary\": {\n" +
            "      \"pin\": \"789723\"\n" +
            "    }\n" +
            "  }\n" +
            "}\n" +
            " ]\n" +
            " }";
    String json2Str = "{\n" +
            "   \"array1\": [\n" +
            "     {\n" +
            "      \"id\": \"1\",\n" +
            "      \"Name\": \"Xytrex Co.\",\n" +
            "      \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "      \"Account Number\": \"ABC15797531\",\n" +
            "      \"Address\": {\n" +
            "        \"Permanent\": {\n" +
            "          \"Street\": \"st.road\",\n" +
            "          \"pin\": \"789723\"\n" +
            "        },\n" +
            "        \"Temporary\": {\n" +
            "          \"Street\": \"st.road\",\n" +
            "          \"pin\": \"789723\"\n" +
            "        }\n" +
            "      }\n" +
            "   },\n" +
            "\n" +
            "  {\n" +
            "     \"id\": \"2\",\n" +
            "     \"Name\": \"Xytrex Co.\",\n" +
            "    \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "    \"Account Number\": \"ABC15797531\",\n" +
            "        \"Address\": {\n" +
            "        \"Permanent\": {\n" +
            "        \"Street\": \"st.road\",\n" +
            "        \"pin\": \"789723\"\n" +
            "       },\n" +
            "       \"Temporary\": {\n" +
            "        \"Street\": \"st.road\",\n" +
            "        \"pin\": \"789723\"\n" +
            "       }\n" +
            "     }\n" +
            "   }\n" +
            " ]\n" +
            " }";
    JSONAssert.assertEquals(json1Str, json2Str, true);
    }
}

如果您只是想知道它们之间的差异,请使用如下代码(我将
array2
更改为
array1
以比较它们的内容)

pom文件如下所示

public class GsonClient {
public static void main(String[] args) throws Exception {
    GsonClient cmp = new GsonClient();
    cmp.myTest();
}

private void myTest() throws FileNotFoundException, JSONException {
    String json1Str = "{\n" +
            "   \"array1\": [\n" +
            "    {\n" +
            "      \"id\": \"1\",\n" +
            "      \"Name\": \"Xytrex Co.\",\n" +
            "      \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "      \"Account Number\": \"ABC15797531\",\n" +
            "      \"Address\": {\n" +
            "       \"Permanent\": {\n" +
            "       \"Street\": \"st.road\",\n" +
            "       \"pin\": \"789723\"\n" +
            "       },\n" +
            "        \"Temporary\": {\n" +
            "         \"Street\": \"st.road\",\n" +
            "         \"pin\": \"789723\"\n" +
            "       }\n" +
            "     }\n" +
            "   },\n" +
            "\n" +
            "{\n" +
            "  \"id\": \"2\",\n" +
            "  \"Name\": \"Xytrex Co.\",\n" +
            "  \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "  \"Account Number\": \"ABC15797531\",\n" +
            "  \"Address\": {\n" +
            "    \"Permanent\": {\n" +
            "      \"Street\": \"st.road\",\n" +
            "      \"pin\": \"789723\"\n" +
            "    },\n" +
            "    \"Temporary\": {\n" +
            "      \"pin\": \"789723\"\n" +
            "    }\n" +
            "  }\n" +
            "}\n" +
            " ]\n" +
            " }";
    String json2Str = "{\n" +
            "   \"array1\": [\n" +
            "     {\n" +
            "      \"id\": \"1\",\n" +
            "      \"Name\": \"Xytrex Co.\",\n" +
            "      \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "      \"Account Number\": \"ABC15797531\",\n" +
            "      \"Address\": {\n" +
            "        \"Permanent\": {\n" +
            "          \"Street\": \"st.road\",\n" +
            "          \"pin\": \"789723\"\n" +
            "        },\n" +
            "        \"Temporary\": {\n" +
            "          \"Street\": \"st.road\",\n" +
            "          \"pin\": \"789723\"\n" +
            "        }\n" +
            "      }\n" +
            "   },\n" +
            "\n" +
            "  {\n" +
            "     \"id\": \"2\",\n" +
            "     \"Name\": \"Xytrex Co.\",\n" +
            "    \"Description\": \"Industrial Cleaning Supply Company\",\n" +
            "    \"Account Number\": \"ABC15797531\",\n" +
            "        \"Address\": {\n" +
            "        \"Permanent\": {\n" +
            "        \"Street\": \"st.road\",\n" +
            "        \"pin\": \"789723\"\n" +
            "       },\n" +
            "       \"Temporary\": {\n" +
            "        \"Street\": \"st.road\",\n" +
            "        \"pin\": \"789723\"\n" +
            "       }\n" +
            "     }\n" +
            "   }\n" +
            " ]\n" +
            " }";
    JSONAssert.assertEquals(json1Str, json2Str, true);
    }
}

您确定要从正确的包导入类吗?也许作为“com.google.gson.JsonArray”的导入应该类似于“org.json.something.JsonArray”@Stéphaneamar
org.json.JsonArray
也是一个类,可以在
json Simple
中找到。您确定从正确的包导入了类吗?也许作为“com.google.gson.JsonArray”的导入应该像“org.json.something.JsonArray”@StéphaneAmmar
org.json.JsonArray
也是一个类,它在
json Simple
中可用,不是硬编码值,这是我必须给这两个文件的名称。这不是硬编码值,这些是我必须给这两个文件起的名字。
Exception in thread "main" java.lang.AssertionError: array1[1].Address.Temporary
Unexpected: Street

    at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:417)
    at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:394)
    at org.skyscreamer.jsonassert.JSONAssert.assertEquals(JSONAssert.java:336)
    at com.henryxi.gson.GsonClient.myTest(GsonClient.java:89)
    at com.henryxi.gson.GsonClient.main(GsonClient.java:12)