Java 解析Json“;“无名”;数组数据
我得到了这个无名的json数组Java 解析Json“;“无名”;数组数据,java,android,json,parsing,Java,Android,Json,Parsing,我得到了这个无名的json数组 [ { "symbol": "AAPL", "price": 207.1, "updated_at": "2019-04-23 16:26:09" }, { "symbol": "FB", "price": 183.12, "updated_at": "2019-04-23 16:26:09" } ] 但我的代码使用命名数组,如下所示: { "stocks": [ { "symbol": "AAPL", "price": 20
[ { "symbol": "AAPL", "price": 207.1, "updated_at": "2019-04-23 16:26:09" }, { "symbol": "FB", "price": 183.12, "updated_at": "2019-04-23 16:26:09" } ]
但我的代码使用命名数组,如下所示:
{
"stocks": [
{
"symbol": "AAPL",
"price": 205.98,
"updated_at": "2019-04-23 15:18:25"
},
{
"symbol": "FB",
"price": 182.99,
"updated_at": "2019-04-23 15:18:25"
}
]
}
我不知道如何解析一个无名数组。它只有在命名时才起作用,就像这样(我将json数据数组命名为stocks)
如何使其与无名数组一起工作?
我想使用第一个被注释掉的url
private void jsonParse() {
// String url = "https://financialmodelingprep.com/api/company/real-time-price/AAPL,FB,GOOG,RHT,NOK,INTC?datatype=json";
String url = "https://api.myjson.com/bins/134wfc";
JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
//I call the array stocks, but it doesn't have a name from the server, so it wont show.
try {
JSONArray jsonArray = response.getJSONArray("stocks");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject stock = jsonArray.getJSONObject(i);
String symBol = stock.getString("symbol");
int value = stock.getInt("price");
mTextViewResult.append(symBol + ", " + String.valueOf(value) + " $\n" );
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
});
mQueue.add(request);
}
}
private void jsonParse(){
//字符串url=”https://financialmodelingprep.com/api/company/real-time-price/AAPL,FB,GOOG,RHT,NOK,INTC?数据类型=json”;
字符串url=”https://api.myjson.com/bins/134wfc";
JsonObjectRequest=新的JsonObjectRequest(request.Method.GET,url,null,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
//我调用数组stocks,但它没有来自服务器的名称,因此它不会显示。
试一试{
JSONArray JSONArray=response.getJSONArray(“股票”);
for(int i=0;i
您可以直接请求JSONArray,如示例所示。这样说:
JsonArrayRequest req = new JsonArrayRequest(Request.Method.GET, url, null,,
new Response.Listener<JSONArray>() {
@Override
public void onResponse(JSONArray response) {
Log.d(TAG, response.toString());
try {
// Parsing json array response
// loop through each json object
for (int i = 0; i < response.length(); i++) {
JSONObject object = (JSONObject) response
.get(i);
//do rest of the code
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(),
"Error: " + e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
JsonArrayRequest req=newjsonarrayrequest(Request.Method.GET,url,null,,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
试一试{
//解析json数组响应
//循环遍历每个json对象
对于(int i=0;i
您可以使用.contains()方法来检查数组位置是否有唯一的值或要获取的键或字符串
看看这个例子
public void retrieve(final ListView gv, final ProgressBar myProgressBar) {
final ArrayList<Teacher> teachers = new ArrayList<>();
myProgressBar.setIndeterminate(true);
myProgressBar.setVisibility(View.VISIBLE);
StringRequest stringRequest = new StringRequest(Request.Method.GET, PHP_MYSQL_SITE_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Teacher teacher;
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject;
jsonObject = jsonArray.getJSONObject(i);
if (!jsonObject.getString("shopName").contains(strUserName)) {
} else {
String name = jsonObject.getString("productName");
String description = jsonObject.getString("description");
String price = "Ksh " + jsonObject.getString("sellingPrice");
String productStatus = jsonObject.getString("productStatus");
String imageURL = jsonObject.getString("imagePath");
String buyingPrice = jsonObject.getString("buyingPrice");
String category = jsonObject.getString("category");
String brandName = jsonObject.getString("brandName");
String ID = jsonObject.getString("ID");
teacher = new Teacher(name, description, price, productStatus, brandName, buyingPrice, category,ID, imgUrl + "/uploads/" + imageURL);
teachers.add(teacher);
}
//SET TO SPINNER
adapter = new GridViewAdapter(c, teachers);
gv.setAdapter(adapter);
myProgressBar.setVisibility(View.GONE);
}
} catch (JSONException e) {
myProgressBar.setVisibility(View.GONE);
Toast.makeText(c, "GOOD RESPONSE BUT JAVA CAN'T PARSE JSON IT RECEIEVED. "+e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(c, "UNSUCCESSFUL : ERROR IS : "+volleyError.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(ItemsActivity.this);
requestQueue.add(stringRequest);
}
公共作废检索(最终列表视图gv,最终进度栏myProgressBar){
最终ArrayList教师=新ArrayList();
myProgressBar.SetUndeterminate(真);
myProgressBar.setVisibility(View.VISIBLE);
StringRequest StringRequest=newStringRequest(Request.Method.GET,PHP\u MYSQL\u SITE\u URL,new Response.Listener()){
@凌驾
公共void onResponse(字符串响应){
教师;
试一试{
JSONArray JSONArray=新JSONArray(响应);
for(int i=0;ipublic void retrieve(final ListView gv, final ProgressBar myProgressBar) {
final ArrayList<Teacher> teachers = new ArrayList<>();
myProgressBar.setIndeterminate(true);
myProgressBar.setVisibility(View.VISIBLE);
StringRequest stringRequest = new StringRequest(Request.Method.GET, PHP_MYSQL_SITE_URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Teacher teacher;
try {
JSONArray jsonArray = new JSONArray(response);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject;
jsonObject = jsonArray.getJSONObject(i);
if (!jsonObject.getString("shopName").contains(strUserName)) {
} else {
String name = jsonObject.getString("productName");
String description = jsonObject.getString("description");
String price = "Ksh " + jsonObject.getString("sellingPrice");
String productStatus = jsonObject.getString("productStatus");
String imageURL = jsonObject.getString("imagePath");
String buyingPrice = jsonObject.getString("buyingPrice");
String category = jsonObject.getString("category");
String brandName = jsonObject.getString("brandName");
String ID = jsonObject.getString("ID");
teacher = new Teacher(name, description, price, productStatus, brandName, buyingPrice, category,ID, imgUrl + "/uploads/" + imageURL);
teachers.add(teacher);
}
//SET TO SPINNER
adapter = new GridViewAdapter(c, teachers);
gv.setAdapter(adapter);
myProgressBar.setVisibility(View.GONE);
}
} catch (JSONException e) {
myProgressBar.setVisibility(View.GONE);
Toast.makeText(c, "GOOD RESPONSE BUT JAVA CAN'T PARSE JSON IT RECEIEVED. "+e.getMessage(), Toast.LENGTH_LONG).show();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(c, "UNSUCCESSFUL : ERROR IS : "+volleyError.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(ItemsActivity.this);
requestQueue.add(stringRequest);
}