Java 在ListView中解析Json

Java 在ListView中解析Json,java,android,Java,Android,我正在尝试为Rally开发一个android应用程序。 我的活动类: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_first_page); recyclerView = (RecyclerView) findViewById(R.id.rec

我正在尝试为Rally开发一个android应用程序。 我的活动类:

protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_page);

        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        data_list = new ArrayList<>();
        load_data();
        gridLayoutManager = new GridLayoutManager(this,1);
        recyclerView.setLayoutManager(gridLayoutManager);
        adapter = new CustomAdapter(this,data_list);
        recyclerView.setAdapter(adapter);

    }

    public void load_data()
    {
        String username = getIntent().getStringExtra("username");
        String password = getIntent().getStringExtra("password");
        try
        {
            restApi=new RallyRestApi(new URI("https://rally1.rallydev.com"),username,password);
            QueryRequest userstory = new QueryRequest("HierarchicalRequirement");
            userstory.setFetch(new Fetch((new String[] {"Name", "FormattedID","Tasks"})));
            QueryResponse responseus = restApi.query(userstory);
            JsonArray userstory1 = restApi.query(userstory).getResults();
            for(int i=0;i<responseus.getResults().size();i++)
            {
                JsonObject storyJsonObject = responseus.getResults().get(i).getAsJsonObject();
                QueryRequest taskRequest = new QueryRequest(storyJsonObject.getAsJsonObject("Tasks"));
                taskRequest.setFetch(new Fetch("Name","Actuals","Estimate"));
                JsonArray tasks = restApi.query(taskRequest).getResults();
                for(int j=0;j<tasks.size();j++)
                {
                    MyData data = new MyData(userstory1.get(i).getAsJsonObject().get("Name").toString(),tasks.get(j).getAsJsonObject().get("Name").toString(),tasks.get(j).getAsJsonObject().get("Actuals").toString(),tasks.get(j).getAsJsonObject().get("Estimates").toString());
                    System.out.println("User Story : "+storyJsonObject.get("Name")+" Task :"+tasks.get(j).getAsJsonObject().get("Name")+" Actuals :" +tasks.get(j).getAsJsonObject().get("Actuals")+" Estimate :"+tasks.get(j).getAsJsonObject().get("Estimates"));
                    data_list.add(data);
                }
            }
        }
        catch (URISyntaxException | IOException e)

        {
            e.printStackTrace();
        }
    }
错误日志:

java.lang.RuntimeException:无法启动活动 组件信息{com.bmc.apetkar.akshay_rallyrest/com.bmc.apetkar.akshay_rallyrest.FirstPage}: java.lang.NullPointerException:尝试调用虚拟方法 空值上的“java.lang.String com.google.gson.JsonElement.toString()” 对象引用 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 位于android.app.ActivityThread.-wrap11(ActivityThread.java) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 位于android.os.Handler.dispatchMessage(Handler.java:102) 位于android.os.Looper.loop(Looper.java:148) 位于android.app.ActivityThread.main(ActivityThread.java:5417) 位于java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 原因:java.lang.NullPointerException:尝试调用虚拟机 方法的“java.lang.String com.google.gson.JsonElement.toString()” 空对象引用 在 com.bmc.apetkar.akshay_rallyrest.FirstPage.load_数据(FirstPage.java:72) 在 com.bmc.apetkar.akshay_rallyrest.FirstPage.onCreate(FirstPage.java:45) 位于android.app.Activity.performCreate(Activity.java:6237)


我正在activity class load_data方法中获取NPE。正在运行时加载数据。这可能是什么原因。我需要知道在将数据设置到视图中时是否有错误,或者是否因为某些数据问题。谢谢,我已获取该数据。进行了以下更改

QueryRequest us = new QueryRequest("HierarchicalRequirement");
            us.setFetch(new Fetch("Name", "FormattedID","Tasks"));
            JsonArray us1 = restApi.query(us).getResults();
            for(int i=0;i<us1.size();i++)
            {
                QueryRequest task = new QueryRequest((JsonObject) us1.get(i).getAsJsonObject().get("Tasks"));
                task.setFetch(new Fetch("Name","Actuals","Estimate"));
                JsonArray tsk = restApi.query(task).getResults();
                for(int j=0;j<tsk.size();j++)
                {
                    MyData data = new MyData(us1.get(i).getAsJsonObject().get("Name").toString(),tsk.get(j).getAsJsonObject().get("Name").toString(),tsk.get(j).getAsJsonObject().get("Actuals").toString(),tsk.get(j).getAsJsonObject().get("Estimate").toString());
                    //System.out.println("UserStory : "+us1.get(i).getAsJsonObject().get("Name")+"Task : "+tsk.get(j).getAsJsonObject().get("Name"));
                    data_list.add(data);
                }
            }
QueryRequest us=新的QueryRequest(“层次化需求”);
setFetch(新的Fetch(“Name”、“FormattedID”、“Tasks”);
JsonArray us1=restApi.query(us.getResults();

对于(int i=0;iQuestions正在寻求调试帮助(“为什么这段代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现该问题所需的最短代码。没有明确问题说明的问题对其他读者没有用处。请参阅:。我是否应该发布错误日志?您发布了大量代码,但没有显示需要帮助的错误的错误日志。应该让您想想看,不是吗?…就这一点而言,也不是令人不快的JSON。@Akshay android studio日志面板将显示发生异常的行(代码行号)
public class MyData
{
    private String userstory;
    private String task;
    private String actuals;
    private String todos;
    //getters/setters
QueryRequest us = new QueryRequest("HierarchicalRequirement");
            us.setFetch(new Fetch("Name", "FormattedID","Tasks"));
            JsonArray us1 = restApi.query(us).getResults();
            for(int i=0;i<us1.size();i++)
            {
                QueryRequest task = new QueryRequest((JsonObject) us1.get(i).getAsJsonObject().get("Tasks"));
                task.setFetch(new Fetch("Name","Actuals","Estimate"));
                JsonArray tsk = restApi.query(task).getResults();
                for(int j=0;j<tsk.size();j++)
                {
                    MyData data = new MyData(us1.get(i).getAsJsonObject().get("Name").toString(),tsk.get(j).getAsJsonObject().get("Name").toString(),tsk.get(j).getAsJsonObject().get("Actuals").toString(),tsk.get(j).getAsJsonObject().get("Estimate").toString());
                    //System.out.println("UserStory : "+us1.get(i).getAsJsonObject().get("Name")+"Task : "+tsk.get(j).getAsJsonObject().get("Name"));
                    data_list.add(data);
                }
            }