在 jsonArray for 循环之外获取值
Get values outside of jsonArray for loop
我正在为我的项目开发一个杂货应用程序,我得到了这个 JSON 数组
[
{
"msg":"success",
"id":"1904",
"firstname":"john",
"lastname":"doe",
"email":"johndoe@gmail.com",
"mobile":"10111213",
"appapikey ":"aba27d8447acd61152ad716696465c27"
}
]
我正在使用 Volley
StringRequest
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
var i = Intent(view.context, MainActivity::class.java)
//I want to bring the values out here
//to use them in another class with putExtra()
startActivity(i)
...
...
有没有一种方法可以让我在 for
循环之外获取这些项目(id、名字、姓氏、电子邮件...)到 putExtra() 以在另一个 activity?
谢谢!
在循环外初始化变量,然后在循环内修改它们。这是你的代码,其中包含我的答案的实现。
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
var fName = ""
var lName = ""
var eMail = ""
var moBile = ""
var apiKey = ""
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
fName = userInfo.getString("firstname")
lName = userInfo.getString("lastname")
eMail = userInfo.getString("email")
moBile = userInfo.getString("mobile")
apiKey = userInfo.getString("appapikey ")
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
您可以将 JSON 数组转换为 Bundles 的 ArrayList,然后使用 putParcelableArrayListExtra
。
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
val bundles = ArrayList<Bundle>()
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
val bundle = Bundle()
bundle.putCharSequence(userInfo.getString("firstname"))
bundle.putCharSequence(userInfo.getString("lastname"))
bundle.putCharSequence(userInfo.getString("email"))
bundle.putCharSequence(userInfo.getString("mobile"))
bundle.putCharSequence(userInfo.getString("appapikey "))
bundles.add(bundle)
}
var i = Intent(view.context, MainActivity::class.java)
i.putParcelableArrayListExtra("data", bundles)
startActivity(i)
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
ArrayList<ArrayList<String>> arrayLists=new ArrayList<>();
var jsonArrayInfo = JSONArray(it)
for(i in 0 until(jsonArrayInfo.length())) {
ArrayList arr= new ArrayList();
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
arr.add(fName);
arr.add(lName);
arr.add(eMail);
arr.add(moBile);
arr.add(apiKey);
arrayLists.add(arr);
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
//to send another Activity
Intent i = new Intent(this, MainActivity.class)
intent.putExtra("mylist", myList);
startActivity(i)
//receive Another Activity
ArrayList<ArrayList<String>> myList = (ArrayList<ArrayList<String>))
getIntent().getSerializableExtra("mylist");
我建议您将响应字符串作为 Intent 的 stringExtra 传递,并在另一个 Activity
中将其反序列化
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var i = Intent(view.context, MainActivity::class.java)
i.putExtra("response", it.toString())
startActivity(i)
在主要Activity
val res = intent.getStringExtra("response")
var jsonArrayInfo = JSONArray(res)
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
Toast.makeText(context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
我正在为我的项目开发一个杂货应用程序,我得到了这个 JSON 数组
[
{
"msg":"success",
"id":"1904",
"firstname":"john",
"lastname":"doe",
"email":"johndoe@gmail.com",
"mobile":"10111213",
"appapikey ":"aba27d8447acd61152ad716696465c27"
}
]
我正在使用 Volley
StringRequest
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
var i = Intent(view.context, MainActivity::class.java)
//I want to bring the values out here
//to use them in another class with putExtra()
startActivity(i)
...
...
有没有一种方法可以让我在 for
循环之外获取这些项目(id、名字、姓氏、电子邮件...)到 putExtra() 以在另一个 activity?
谢谢!
在循环外初始化变量,然后在循环内修改它们。这是你的代码,其中包含我的答案的实现。
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
var fName = ""
var lName = ""
var eMail = ""
var moBile = ""
var apiKey = ""
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
fName = userInfo.getString("firstname")
lName = userInfo.getString("lastname")
eMail = userInfo.getString("email")
moBile = userInfo.getString("mobile")
apiKey = userInfo.getString("appapikey ")
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
您可以将 JSON 数组转换为 Bundles 的 ArrayList,然后使用 putParcelableArrayListExtra
。
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var jsonArrayInfo = JSONArray(it)
val bundles = ArrayList<Bundle>()
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
val bundle = Bundle()
bundle.putCharSequence(userInfo.getString("firstname"))
bundle.putCharSequence(userInfo.getString("lastname"))
bundle.putCharSequence(userInfo.getString("email"))
bundle.putCharSequence(userInfo.getString("mobile"))
bundle.putCharSequence(userInfo.getString("appapikey "))
bundles.add(bundle)
}
var i = Intent(view.context, MainActivity::class.java)
i.putParcelableArrayListExtra("data", bundles)
startActivity(i)
val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
ArrayList<ArrayList<String>> arrayLists=new ArrayList<>();
var jsonArrayInfo = JSONArray(it)
for(i in 0 until(jsonArrayInfo.length())) {
ArrayList arr= new ArrayList();
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
arr.add(fName);
arr.add(lName);
arr.add(eMail);
arr.add(moBile);
arr.add(apiKey);
arrayLists.add(arr);
Toast.makeText(view.context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}
//to send another Activity
Intent i = new Intent(this, MainActivity.class)
intent.putExtra("mylist", myList);
startActivity(i)
//receive Another Activity
ArrayList<ArrayList<String>> myList = (ArrayList<ArrayList<String>))
getIntent().getSerializableExtra("mylist");
我建议您将响应字符串作为 Intent 的 stringExtra 传递,并在另一个 Activity
中将其反序列化val stringRequest = StringRequest(Request.Method.GET, url, Response.Listener {
var i = Intent(view.context, MainActivity::class.java)
i.putExtra("response", it.toString())
startActivity(i)
在主要Activity
val res = intent.getStringExtra("response")
var jsonArrayInfo = JSONArray(res)
for(i in 0 until(jsonArrayInfo.length())) {
var userInfo = jsonArrayInfo.getJSONObject(i)
var fName = userInfo.getString("firstname")
var lName = userInfo.getString("lastname")
var eMail = userInfo.getString("email")
var moBile = userInfo.getString("mobile")
var apiKey = userInfo.getString("appapikey ")
Toast.makeText(context, "Welcome $apiKey", Toast.LENGTH_SHORT).show()
}