JSONObject kullanarak Java'da doğru JSONArray oluşturma


130

JSONObject kullanarak Java'da aşağıdaki gibi bir JSON Nesnesi nasıl oluşturabilirim?

{
    "employees": [
        {"firstName": "John", "lastName": "Doe"}, 
        {"firstName": "Anna", "lastName": "Smith"}, 
        {"firstName": "Peter", "lastName": "Jones"}
    ],
    "manager": [
        {"firstName": "John", "lastName": "Doe"}, 
        {"firstName": "Anna", "lastName": "Smith"}, 
        {"firstName": "Peter", "lastName": "Jones"}
    ]
}

Pek çok örnek buldum ama tam olarak JSONArray dizem bulamadım.

Yanıtlar:


247

Başlamanız için java 6'yı kullanarak bazı kodlar:

JSONObject jo = new JSONObject();
jo.put("firstName", "John");
jo.put("lastName", "Doe");

JSONArray ja = new JSONArray();
ja.put(jo);

JSONObject mainObj = new JSONObject();
mainObj.put("employees", ja);

Düzenleme: Burada putvs ile ilgili çok fazla kafa karışıklığı addolduğundan, farkı açıklamaya çalışacağım. Java 6'da org.json.JSONArray içeren putyöntem ve Java 7 javax.json içeren addbir yöntem.

Java 7'de oluşturucu kalıbını kullanmanın bir örneği şuna benzer:

JsonObject jo = Json.createObjectBuilder()
  .add("employees", Json.createArrayBuilder()
    .add(Json.createObjectBuilder()
      .add("firstName", "John")
      .add("lastName", "Doe")))
  .build();

3
belki dene / yakala'ya da sarılabilir misin? (veya yöntemin attığı ifadeye sahip olması gerekir)
Lukas1

8
JSONArray'in bir put yöntemi yok.
Jim

2
koymak yerine ekle kullanın
CleanX

1
@PT_C yep JsonObject jo = Json.createObjectBuilder (); jo.add ("firstName", "John"); jo.add ("lastName", "Doe"); jo.build ();
Grammin

1
@ArnoldBrown mainObj'ye bir dizi eklemek için bir anahtara sahip olması gerekir.
Grammin

15

Sanırım bu JSON'u bir sunucudan veya bir dosyadan alıyorsunuz ve bunun dışında bir JSONArray nesnesi oluşturmak istiyorsunuz.

String strJSON = ""; // your string goes here
JSONArray jArray = (JSONArray) new JSONTokener(strJSON).nextValue();
// once you get the array, you may check items like
JSONOBject jObject = jArray.getJSONObject(0);

Bu yardımcı olur umarım :)


11

Yinelenen kodlardan kaçınmak için kişi json nesnesi oluşturmak için küçük yeniden kullanılabilir yöntem yazılabilir

JSONObject  getPerson(String firstName, String lastName){
   JSONObject person = new JSONObject();
   person .put("firstName", firstName);
   person .put("lastName", lastName);
   return person ;
} 

public JSONObject getJsonResponse(){

    JSONArray employees = new JSONArray();
    employees.put(getPerson("John","Doe"));
    employees.put(getPerson("Anna","Smith"));
    employees.put(getPerson("Peter","Jones"));

    JSONArray managers = new JSONArray();
    managers.put(getPerson("John","Doe"));
    managers.put(getPerson("Anna","Smith"));
    managers.put(getPerson("Peter","Jones"));

    JSONObject response= new JSONObject();
    response.put("employees", employees );
    response.put("manager", managers );
    return response;
  }

1

Lütfen bunu dene ... umarım yardımcı olur

JSONObject jsonObj1=null;
JSONObject jsonObj2=null;
JSONArray array=new JSONArray();
JSONArray array2=new JSONArray();

jsonObj1=new JSONObject();
jsonObj2=new JSONObject();


array.put(new JSONObject().put("firstName", "John").put("lastName","Doe"))
.put(new JSONObject().put("firstName", "Anna").put("v", "Smith"))
.put(new JSONObject().put("firstName", "Peter").put("v", "Jones"));

array2.put(new JSONObject().put("firstName", "John").put("lastName","Doe"))
.put(new JSONObject().put("firstName", "Anna").put("v", "Smith"))
.put(new JSONObject().put("firstName", "Peter").put("v", "Jones"));

jsonObj1.put("employees", array);
jsonObj1.put("manager", array2);

Response response = null;
response = Response.status(Status.OK).entity(jsonObj1.toString()).build();
return response;
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.