创建一个嵌套的JSON对象

3
我正在尝试创建一个复杂的嵌套对象,就像这样:
{
   "user":{
      "type":"facebook",
      "first_name":"harsha",
      "last_name":"mv",
      "gender":"male"
   },
   "friends":[
      {
         "id":"23",
         "name":"Vachana"
      },
      {
         "id":"23",
         "name":"Jyosna"
      },
      {
         "id":"23",
         "name":"Avinash"
      }
   ]
}

Android Java代码:

    JSONObject user = new JSONObject();
    try {
        user.put("first_name", "harsha");
        user.put("last_name", "mv");
        user.put("gender", "mail");

        System.out.println(user);
    } catch (JSONException e1) {
        e1.printStackTrace();
    }

我想像上面那样将其他对象嵌套。有人能告诉我如何做到这一点吗?我需要使用哪个函数或格式?
8个回答

10

'friends'是一个JSONArray,它的每个项都是一个JSONObject。只需使用put方法并将JSONObject或者JSONArray作为值传入即可。对于数组,你还需要指定索引。


5

在JSONObject中有一个函数。

put(String string, Object value)

这个方法接收一个JSONArray,你可以将其转换为JSONObject的数组。我想你的“friend”类可以生成被放入列表中的JSONObject。


2

查看这些JSON编码示例,以便您可以轻松地进行管理。

JSON编码


1
Gson 是最适合的工具,使用 Gson 可以将 Java 的普通类转换为 JSON 对象,以下是一个示例:
public class Member
{    
public String  ID;
public String FirstName;    
public String LastName;    
public String Email;    
public String DisplayName ;  
public String DOB;    
public String AboutMe;   
public String MemberType;   
public String UserTypeName;

}

initiate Member class and fill in the values
Member member = new Member();
 member.ID = "1";
 .......

 //now use GSON to get the JSON

 Gson gson = new Gson();
 String JSONString = gson.toJson(member);

想了解更多,请查看此http://code.google.com/p/google-gson/


这个嵌套是怎么样的? - ben26941

1

我要转换话题,但是我坚持让你使用Gson,因为它可以在一个类中维护所有元素,并具有运行时的getter/setter。


1
使用这个Json jar文件,它会根据标签名(例如:firstname,lastname等)自动设置和获取值。 从下面的链接下载和使用jar文件:

Android json jar file


0
如果您想创建嵌套的JSON对象,则可以使用以下代码:
            JSONObject objFirst = new JSONObject();
            objFirst.put("description", "ADBCD");
            objFirst.put("type", "TEXT");


            JSONObject objSecond = new JSONObject();
            objSecond.put("askjdhasjk", "XYZ");

            objFirst.accumulate("This Nw", objSecond);

0
//Import the following
//import java.util.ArrayList;
//import org.bson.Document;

Document root= new Document();
Document rootUser = new Document();
ArrayList rootFriends= new ArrayList();
Document rootFriends0 = new Document();
Document rootFriends1 = new Document();
Document rootFriends2 = new Document();




rootUser.append("type","facebook");   
rootUser.append("first_name","harsha");
rootUser.append("last_name","mv");
rootUser.append("gender","male");
rootFriends0.append("id","23");
rootFriends0.append("name","Vachana");
rootFriends1.append("id","23");
rootFriends1.append("name","Jyosna");
rootFriends2.append("id","23");
rootFriends2.append("name","Avinash");




if (!rootUser.isEmpty()){
root.append("user",rootUser);
}
if (!rootFriends.isEmpty()){
root.append("friends",rootFriends);
}
if (!rootFriends0.isEmpty()){
rootFriends.add(rootFriends0);
}
if (!rootFriends.isEmpty()){
root.append("friends",rootFriends);
}
if (!rootFriends1.isEmpty()){
rootFriends.add(rootFriends1);
}
if (!rootFriends.isEmpty()){
root.append("friends",rootFriends);
}
if (!rootFriends2.isEmpty()){
rootFriends.add(rootFriends2);
}
if (!rootFriends.isEmpty()){
root.append("friends",rootFriends);
}


System.out.println(root.toJson());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接