Java 在ListView中解析Json
我正在尝试为Rally开发一个android应用程序。 我的活动类: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
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);
}
}