Android从javaws解析JsonArray到hashmap

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

我正在尝试从http请求获取jsonarray,并遵循本教程:

我有一个疑问,在教程中json文件是这样的:

{
    "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();
        }