Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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
Java 如何在Json对象中获取详细信息?_Java_Json_Parsing - Fatal编程技术网

Java 如何在Json对象中获取详细信息?

Java 如何在Json对象中获取详细信息?,java,json,parsing,Java,Json,Parsing,我想知道如何从Json对象获得更多细节 这是Json文件: { "Shapes": "Models", "Square": { "Length": 10 }, "Rectangle": { "Length": 10, "Width": 20 }, "Circle": { "Radius": 5 }, "Equilateral": { "Side": 10

我想知道如何从Json对象获得更多细节

这是Json文件:

{
    "Shapes": "Models",
    "Square": {
        "Length": 10
    },
    "Rectangle": {
        "Length": 10,
        "Width": 20
    },
    "Circle": {
        "Radius": 5
    },
    "Equilateral": {
        "Side": 10
    },
    "Scalene": {
        "Side1": 10,
        "Side2": 5,
        "Side3": 3
    },
    "Isosceles": {
        "Side1": 10,
        "Side2": 5,
        "Side3": 5
    }
}
我的代码如下所示:

public static void main(String[] args) {
    JSONParser parser = new JSONParser();
    try {
        Object obj = parser.parse(new FileReader("filepath"));
        JSONObject jsonObject = (JSONObject) obj;
        Object Square =  jsonObject.get("Square");
        System.out.println("Square: " + Square);
        Object Rect =  jsonObject.get("Rectangle");
        System.out.println("Rectangle: " + Rect);
    }
o/p类似于

Square: {"Length":10}
Rectangle: {"Length":10,"Width":20}

我想了解更多细节,如“长度/宽度/半径”

正方形、矩形等。示例JSON中的每个属性都是具有自己属性的JSONObject。要访问这些JSON对象的属性,请将对象强制转换为JSONObject实例以访问其方法

    (JSONObject) Square = (JSONObject)jsonObject.get("Square");
    System.out.println("Square: " + Square);
    System.out.println("Square: Length=" + Square.get("Length"));

    JSONObject rect =  (JSONObject)jsonObject.get("Rectangle");
    System.out.println("Rectangle: " + rect);
    System.out.printf("Rectangle: Length=%s Width=%s%n",
      rect.get("Length"), rect.get("Width"));
顺便说一句,如果想要有重复的关键点(例如,多个正方形),那么您需要将数据表示为数组(或列表)与贴图,并使形状类型成为形状细节(长度、宽度等)的属性


Square、Rectangle等。JSON示例中的属性都是具有自己属性的JSONObject。要访问这些JSON对象的属性,请将对象强制转换为JSONObject实例以访问其方法

    (JSONObject) Square = (JSONObject)jsonObject.get("Square");
    System.out.println("Square: " + Square);
    System.out.println("Square: Length=" + Square.get("Length"));

    JSONObject rect =  (JSONObject)jsonObject.get("Rectangle");
    System.out.println("Rectangle: " + rect);
    System.out.printf("Rectangle: Length=%s Width=%s%n",
      rect.get("Length"), rect.get("Width"));
顺便说一句,如果想要有重复的关键点(例如,多个正方形),那么您需要将数据表示为数组(或列表)与贴图,并使形状类型成为形状细节(长度、宽度等)的属性


您引用的JSON的键
Square
列出了两次。虽然我认为这是有效的JSON,但这意味着您不能访问第一个,只能访问第二个。我已经做了必要的更改。我只需要1个正方形,我添加了第二个正方形只是为了测试我的代码。谢谢。您引用的JSON的键
Square
列出了两次。虽然我认为这是有效的JSON,但这意味着您不能访问第一个,只能访问第二个。我已经做了必要的更改。我只需要1个正方形,我添加了第二个正方形只是为了测试我的代码。谢谢。第二个正方形实际上不需要。我用它来做测试。我确实相应地编辑了我的Json代码。再次感谢。第二个正方形实际上是不需要的。我用它来做测试。我确实相应地编辑了我的Json代码。再次感谢。