Android从javaws解析JsonArray到hashmap
我正在尝试从http请求获取jsonarray,并遵循本教程: 我有一个疑问,在教程中json文件是这样的:Android从javaws解析JsonArray到hashmap,android,arrays,json,web-services,hashmap,Android,Arrays,Json,Web Services,Hashmap,我正在尝试从http请求获取jsonarray,并遵循本教程: 我有一个疑问,在教程中json文件是这样的: { "contacts": [ { "id": "c200", "name": "Ravi Tamada", "email": "ravi@gmail.com", "address": "xx-xx-xxxx,x - street, x
{
"contacts": [
{
"id": "c200",
"name": "Ravi Tamada",
"email": "ravi@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
},
{
"id": "c2012",
"name": "Eminem",
"email": "eminem@gmail.com",
"address": "xx-xx-xxxx,x - street, x - country",
"gender" : "male",
"phone": {
"mobile": "+91 0000000000",
"home": "00 000000",
"office": "00 000000"
}
}
]
}
这是我的json:
[
{"email":"prova","one":"test","data":"2015-02-10 00:00:00.0","cash":100},
{"email":"prova","one":"provadue","data":"2015-02-11 23:41:32.0","cash":15}
]
这是我在web服务上的“联系人”课程:
public class contacts
{
private String email;
private String one;
private String data;
private int cash;
public contacts()
{
}
public contacts(String email, String one, String data, int cash)
{
super();
this.email = email;
this.one = one;
this.data = data;;
this.cash = cash;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getOne() {
return one;
}
public void setOne(String one) {
this.one = one;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public int getCash() {
return cash;
}
public void setCash(int cash) {
this.cash = cash;
}
@Override
public String toString()
{
return "Contact [email=" + email + ", one=" + one + ", data=" + data + ", cash=" + cash + "]";
}
}
现在,在本教程之后是该部分:
// Getting JSON Array node
contacts = jsonObj.getJSONArray(TAG_CONTACTS);
// looping through All Contacts
for (int i = 0; i < contacts.length(); i++) {
JSONObject c = contacts.getJSONObject(i);
但在我的Json中,我没有那个节点,我可以做些什么来更改教程脚本或更改来自web服务的Json响应
提前谢谢 尝试使用以下行:
contacts = jsonObj.getJSONArray(0);
但是,您应该始终向JSON字符串添加一个键(如教程示例中的“contacts”键),并使用:
使用JSON数组
编辑:好的,我创建了一个示例,说明如何使用联系人
类为数组获取密钥。我无法实现您在示例中提供的Web服务,但这应该让您知道如何获取密钥
您的联系人
类完好无损
我创建了一个名为ContactsObject
的新类:
import java.util.ArrayList;
public class ContactsObject {
private ArrayList<contacts> contacts; // THIS IS HOW YOUR KEY WILL BE NAMED (in this case, "contacts")
public void setListContacts(ArrayList<contacts> contacts)
{
this.contacts = contacts;
}
public ArrayList<contacts> getListContacts()
{
return this.contacts;
}
}
EDIT2:这是您应该尝试使代码看起来像的方式(与您提供的示例相比):
String=null;
ContactsObject objj=新的ContactsObject();
ArrayList donationList=新建ArrayList();
尝试
{
donationList=new DonationManager().getList();//或以何种方式获取数组列表
objj.setListContacts(捐赠列表);
Gson Gson=新的Gson();
捐款=gson.toJson(objj);
}捕获(例外e)
{
e、 printStackTrace();
}
希望这能有所帮助。谢谢,但我需要在哪里添加这把钥匙?在我的web服务联系人课程中?我认为使用:public String toString(){return“Contact[email=“+email+”,one=“+one+”,data=“+data+”,cash=“+cash+””);}这是我的密钥,但json响应中没有……你能把代码的一部分放在你使用这个
contacts
类的地方吗?只是为了检查如何创建json对象……当然,您可以在那里看到我的web服务:在这种情况下,类名是捐赠,但是同一个项目(“电子邮件”)(“text1”)(“text2”)(“硬币”)。在这种情况下,是电子邮件一个数据现金,我只更改名称……感谢您的帮助miselking,我不明白一件事,我需要在哪里创建ContactsObject类?在web服务中使用该键创建新的json?然后您谈到main活动,但我把它放在这里:objj.setListContacts(moreconts);//执行此操作以设置“键”Gson Gson=new Gson();在web服务上的DonationService中,是否在htt请求后创建新的json?
contacts = jsonObj.getJSONArray("contacts");
import java.util.ArrayList;
public class ContactsObject {
private ArrayList<contacts> contacts; // THIS IS HOW YOUR KEY WILL BE NAMED (in this case, "contacts")
public void setListContacts(ArrayList<contacts> contacts)
{
this.contacts = contacts;
}
public ArrayList<contacts> getListContacts()
{
return this.contacts;
}
}
ContactsObject objj = new ContactsObject();
ArrayList<contacts> moreContacts = new ArrayList<contacts>();
contacts cnt = new contacts();
cnt.setCash(100);
cnt.setData("some data");
cnt.setEmail("some mail");
cnt.setOne("one?");
moreContacts.add(cnt);
contacts cnt1 = new contacts();
cnt1.setCash(100);
cnt1.setData("some data1");
cnt1.setEmail("some mail1");
cnt1.setOne("2?");
moreContacts.add(cnt1);
contacts cnt2 = new contacts();
cnt2.setCash(100);
cnt2.setData("some data2");
cnt2.setEmail("some mail2");
cnt2.setOne("3?");
moreContacts.add(cnt2);
// "moreContacts" is similar to that example's "donationList", I think...
objj.setListContacts(moreContacts); // doing this to set the "key"
Gson gson = new Gson();
Log.w("READ THIS!!!", gson.toJson(objj)); // check your Log for warning "READ THIS!!!", this should be printed out:
// {"contacts":[{"data":"some data","email":"some mail","one":"one?","cash":100},{"data":"some data1","email":"some mail1","one":"2?","cash":100},{"data":"some data2","email":"some mail2","one":"3?","cash":100}]}
String donations = null;
ContactsObject objj = new ContactsObject();
ArrayList<myDonations> donationList = new ArrayList<myDonations>();
try
{
donationList = new DonationManager().getList(); // or however you get the array list
objj.setListContacts(donationList);
Gson gson = new Gson();
donations = gson.toJson(objj);
} catch (Exception e)
{
e.printStackTrace();
}