Java JSON和Android Studio
我的API: 我在android studio上的代码:Java JSON和Android Studio,java,android,json,Java,Android,Json,我的API: 我在android studio上的代码: private class GetDistance extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { HttpHandler sh = new HttpHandler(); String jsonStr = sh.makeServiceCa
private class GetDistance extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... arg0) {
HttpHandler sh = new HttpHandler();
String jsonStr = sh.makeServiceCall("http://maps.googleapis.com/maps/api/distancematrix/json?origins=45.067381,%202.988574&destinations=45.067381,%202.988574&mode=driving&language=en-US&sensor=false");
if (jsonStr != null) {
try {
JSONObject jsonObj = new JSONObject(jsonStr);
JSONObject contacts = jsonObj.getJSONObject("rows");
JSONArray childrenArray = contacts.getJSONArray("elements");
for (int i = 0; i < childrenArray.length(); i++) {
JSONObject childrenData = childrenArray.getJSONObject(i);
String json_distance = childrenData.getString("status");
test58 = json_distance;
}
} catch (final JSONException e) {
Log.e(TAG, "Json parsing error: " + e.getMessage());
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getApplicationContext(),
"Json parsing error: " + e.getMessage(),
Toast.LENGTH_LONG)
.show();
}
});
}
} else {}
return null;
}
私有类GetDistance扩展异步任务{
@凌驾
受保护的Void doInBackground(Void…arg0){
HttpHandler sh=新的HttpHandler();
字符串jsonStr=sh.makeServiceCall(“http://maps.googleapis.com/maps/api/distancematrix/json?origins=45.067381,%202.988574&目的地=45.067381,%202.988574&模式=driving&语言=en-US&传感器=false”);
if(jsonStr!=null){
试一试{
JSONObject jsonObj=新的JSONObject(jsonStr);
JSONObject contacts=jsonObj.getJSONObject(“行”);
JSONArray childrenArray=contacts.getJSONArray(“元素”);
对于(int i=0;i
错误:Json解析错误:类型为org.Json.JSONArray的行上的值[{“元素”:[{“距离”:{“文本”:“1米”,“值”:0},“持续时间”:{“文本”:“1分钟”,“值”:0},“状态”:“OK”}]}]无法转换为JSONObject
如何访问行->元素->距离->文本
谢谢。我的新代码:
if (jsonStr != null) {
try {
JSONObject object = new JSONObject(jsonStr);
JSONArray rows = object.getJSONArray("rows");
JSONArray elements = rows.getJSONArray("elements");
JSONObject distance = elements.getJSONObject("distance");
test58 = distance.getString("text");
}
行.getJSONArray(“元素”)和元素.getJSONObject(“距离”)出错
JsonArray中的getJsonArray(int)不能应用于(java.lang.string)
JSONObject contacts=JSONObject.getJSONObject(“行”);
键“rows”返回一个数组,而不是一个对象
将上述语句更改为
JSONArray行数组=jsonObj.getJSONArray(“行”);
现在选择rowArray数组中的第一个元素
从该对象获取与键元素关联的数组
JSONArray elementArray=firstRow.getJSONArray(“元素”);
那么
这是一个想法
@Override
protected Void doInBackground(Void... params) {
System.out.println("Menu doInBackground");
ParseJson parseJson = new ParseJson();
JSONObject jsonObject = parseJson.getJsonFromURL("YOUR LINK");
try {
JSONArray jsonArray = jsonObject.getJSONArray("rows");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObjectRow = jsonArray.getJSONObject(i);
for(int j= 0; j< jsonObjectRow; j++){
JSONObject jsonObjectElements = jsonArray.getJSONObject(j);
....
for(int k = 0; k< jsonObjectElements; k++){
JSONObject jsonObjectDistance = jsonArray.getJSONObject(j);
...
}
}
}
} catch (JSONException e) {
}
return null;
}
@覆盖
受保护的Void doInBackground(Void…参数){
System.out.println(“菜单doInBackground”);
ParseJson ParseJson=新的ParseJson();
JSONObject JSONObject=parseJson.getJsonFromURL(“您的链接”);
试一试{
JSONArray JSONArray=jsonObject.getJSONArray(“行”);
for(int i=0;i
你的模型
public class MyModel{
private String[] destinationAddress;
private String[] originAddresses;
private List<Row> listRow;
private String status;
public class Row{
private String estatus;
private List<Elements> listElements;
public class Elements{
private List<Distance> distance;
public class Distance {
private String text;
private int value;
public Distance(String text, int value) {
this.text = text;
this.value = value;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public Elements(List<Distance> distance) {
this.distance = distance;
}
public List<Distance> getDistance() {
return distance;
}
public void setDistance(List<Distance> distance) {
this.distance = distance;
}
}
public Row(String estatus, List<Elements> listElements) {
this.estatus = estatus;
this.listElements = listElements;
}
public String getEstatus() {
return estatus;
}
public void setEstatus(String estatus) {
this.estatus = estatus;
}
public List<Elements> getListElements() {
return listElements;
}
public void setListElements(List<Elements> listElements) {
this.listElements = listElements;
}
}
public MyModel(String[] destinationAddress, String[] originAddresses, List<Row> listRow, String status) {
this.destinationAddress = destinationAddress;
this.originAddresses = originAddresses;
this.listRow = listRow;
this.status = status;
}
public String[] getDestinationAddress() {
return destinationAddress;
}
public void setDestinationAddress(String[] destinationAddress) {
this.destinationAddress = destinationAddress;
}
public String[] getOriginAddresses() {
return originAddresses;
}
public void setOriginAddresses(String[] originAddresses) {
this.originAddresses = originAddresses;
}
public List<Row> getListRow() {
return listRow;
}
public void setListRow(List<Row> listRow) {
this.listRow = listRow;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
公共类MyModel{
私有字符串[]目的地址;
私有字符串[]原始地址;
私有列表列表行;
私有字符串状态;
公共类行{
私有字符串资产;
私人名单;
公共类要素{
私有列表距离;
公共类距离{
私有字符串文本;
私有int值;
公共距离(字符串文本,int值){
this.text=文本;
这个值=值;
}
公共字符串getText(){
返回文本;
}
公共void setText(字符串文本){
this.text=文本;
}
public int getValue(){
返回值;
}
公共无效设置值(int值){
这个值=值;
}
}
公共元素(列表距离){
这个距离=距离;
}
公共列表getDistance(){
返回距离;
}
公共空隙设置距离(列表距离){
这个距离=距离;
}
}
公共行(字符串状态,列表元素){
this.estatus=estatus;
this.listElements=listElements;
}
公共字符串getEstatus(){
归还遗产;
}
公共无效集合状态(字符串状态){
this.estatus=estatus;
}
公共列表getListElements(){
返回列表元素;
}
公共void setListElements(列表listElements){
this.listElements=listElements;
}
}
公共MyModel(字符串[]目的地址、字符串[]原始地址、列表列表行、字符串状态){
this.destinationAddress=destinationAddress;
this.originAddresses=originAddresses;
this.listRow=listRow;
这个状态=状态;
}
公共字符串[]getDestinationAddress(){
返回目的地地址;
}
public void setDestinationAddress(字符串[]destinationAddress){
th
@Override
protected Void doInBackground(Void... params) {
System.out.println("Menu doInBackground");
ParseJson parseJson = new ParseJson();
JSONObject jsonObject = parseJson.getJsonFromURL("YOUR LINK");
try {
JSONArray jsonArray = jsonObject.getJSONArray("rows");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObjectRow = jsonArray.getJSONObject(i);
for(int j= 0; j< jsonObjectRow; j++){
JSONObject jsonObjectElements = jsonArray.getJSONObject(j);
....
for(int k = 0; k< jsonObjectElements; k++){
JSONObject jsonObjectDistance = jsonArray.getJSONObject(j);
...
}
}
}
} catch (JSONException e) {
}
return null;
}
public class MyModel{
private String[] destinationAddress;
private String[] originAddresses;
private List<Row> listRow;
private String status;
public class Row{
private String estatus;
private List<Elements> listElements;
public class Elements{
private List<Distance> distance;
public class Distance {
private String text;
private int value;
public Distance(String text, int value) {
this.text = text;
this.value = value;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
}
}
public Elements(List<Distance> distance) {
this.distance = distance;
}
public List<Distance> getDistance() {
return distance;
}
public void setDistance(List<Distance> distance) {
this.distance = distance;
}
}
public Row(String estatus, List<Elements> listElements) {
this.estatus = estatus;
this.listElements = listElements;
}
public String getEstatus() {
return estatus;
}
public void setEstatus(String estatus) {
this.estatus = estatus;
}
public List<Elements> getListElements() {
return listElements;
}
public void setListElements(List<Elements> listElements) {
this.listElements = listElements;
}
}
public MyModel(String[] destinationAddress, String[] originAddresses, List<Row> listRow, String status) {
this.destinationAddress = destinationAddress;
this.originAddresses = originAddresses;
this.listRow = listRow;
this.status = status;
}
public String[] getDestinationAddress() {
return destinationAddress;
}
public void setDestinationAddress(String[] destinationAddress) {
this.destinationAddress = destinationAddress;
}
public String[] getOriginAddresses() {
return originAddresses;
}
public void setOriginAddresses(String[] originAddresses) {
this.originAddresses = originAddresses;
}
public List<Row> getListRow() {
return listRow;
}
public void setListRow(List<Row> listRow) {
this.listRow = listRow;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}