Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.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 将JSONObject转换为字符串并长返回null_Java_Json_Jsonobject - Fatal编程技术网

Java 将JSONObject转换为字符串并长返回null

Java 将JSONObject转换为字符串并长返回null,java,json,jsonobject,Java,Json,Jsonobject,当jsonobject转换为String或long时,它返回null。为什么? 我的JSON文件: { "memberships": [ { "project": { "id": 30483134480107, "name": "Asana Integrations" }, "section": null } ]

jsonobject
转换为
String
long
时,它返回
null
。为什么?

我的JSON文件:

{
    "memberships": [
        {
            "project": {
                "id": 30483134480107,
                "name": "Asana Integrations"
            },
            "section": null
        }
    ]
}

我的代码是:

package jsontest;

import java.beans.Statement;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class MoreComplexJson {
    private static final String filePath = "C:\\jsonTestFile.json";

    public static void main(String[] args) {
        try {
            FileReader reader = new FileReader(filePath);
            JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);

            JSONArray memberships = (JSONArray) jsonObject.get("memberships");

            for (int z = 0; z < memberships.size(); z++) {
                Iterator m = memberships.iterator();

                // take each value from the json array separately
                while (m.hasNext()) {
                    JSONObject innerObj = (JSONObject) m.next();
                    Long id = (Long) innerObj.get("id");
                    String name = (String) innerObj.get("name");
                    System.out.println("id " + id + " with name " + name);
                }
            }
        }
        catch (FileNotFoundException ex) {

            ex.printStackTrace();
            System.out.println(ex + "");
        }
        catch (IOException ex) {
            ex.printStackTrace();
            ex.printStackTrace();
            System.out.println(ex + "");
        }
        catch (ParseException ex) {
            ex.printStackTrace();
            ex.printStackTrace();
            System.out.println(ex + "");
        }
        catch (NullPointerException ex) {
            ex.printStackTrace();
            ex.printStackTrace();
            System.out.println(ex + "");
        }
    }
}
包jsontest;
导入java.beans.Statement;
导入java.io.FileNotFoundException;
导入java.io.FileReader;
导入java.io.IOException;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.PreparedStatement;
导入java.sql.SQLException;
导入java.util.Iterator;
导入java.util.Scanner;
导入java.util.logging.Level;
导入java.util.logging.Logger;
导入org.json.simple.JSONArray;
导入org.json.simple.JSONObject;
导入org.json.simple.parser.JSONParser;
导入org.json.simple.parser.ParseException;
公共类MoreComplexJson{
私有静态最终字符串filePath=“C:\\jsonTestFile.json”;
公共静态void main(字符串[]args){
试一试{
FileReader=新的FileReader(filePath);
JSONParser JSONParser=新的JSONParser();
JSONObject JSONObject=(JSONObject)jsonParser.parse(reader);
JSONArray成员身份=(JSONArray)jsonObject.get(“成员身份”);
对于(intz=0;z

输出:

id为null,名称为null


id
name
属于
project JSONObject
所以使用
project JSONObject

对循环尝试此

for (int z = 0; z < memberships.size(); z++) {
    JSONObject m = (JSONObject) memberships.get(z);
    JSONObject innerObj = (JSONObject) m.get("project");

    // If you want section
    String section = (String) m.get("section");
    System.out.println("section " + section);


    Long id = (Long) innerObj.get("id");
    String name = (String) innerObj.get("name");
    System.out.println("id " + id + " with name " + name);

}
for(int z=0;z
问题在于,当您试图获取
id
name
时,您不是从
project
获取它,而是从包含
project
的对象获取它。应该有:

  JSONObject innerObj = (JsonObject) ((JSONObject) m.next()).get("project)";

这种代码很快就会变得很难看。相反,您可以使用更高阶的解析器,例如。这样,您的代码就可以更加清晰,您就不必担心每一段JSON的转换。

如果我也想像项目详细信息一样获取小节详细信息,该怎么办?您使用的JSON库的版本是什么?