mirror of
https://github.com/stleary/JSON-java.git
synced 2025-08-03 03:15:32 -04:00
Merge pull request #529 from ethauvin/master
Added putAll(Collection) and putAll(Array) methods.
This commit is contained in:
commit
870fa03a19
@ -173,9 +173,7 @@ public class JSONArray implements Iterable<Object> {
|
|||||||
this.myArrayList = new ArrayList<Object>();
|
this.myArrayList = new ArrayList<Object>();
|
||||||
} else {
|
} else {
|
||||||
this.myArrayList = new ArrayList<Object>(collection.size());
|
this.myArrayList = new ArrayList<Object>(collection.size());
|
||||||
for (Object o: collection){
|
this.addAll(collection);
|
||||||
this.myArrayList.add(JSONObject.wrap(o));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -193,16 +191,7 @@ public class JSONArray implements Iterable<Object> {
|
|||||||
*/
|
*/
|
||||||
public JSONArray(Object array) throws JSONException {
|
public JSONArray(Object array) throws JSONException {
|
||||||
this();
|
this();
|
||||||
if (array.getClass().isArray()) {
|
this.addAll(array);
|
||||||
int length = Array.getLength(array);
|
|
||||||
this.myArrayList.ensureCapacity(length);
|
|
||||||
for (int i = 0; i < length; i += 1) {
|
|
||||||
this.put(JSONObject.wrap(Array.get(array, i)));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw new JSONException(
|
|
||||||
"JSONArray initial value should be a string or collection or array.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1174,6 +1163,36 @@ public class JSONArray implements Iterable<Object> {
|
|||||||
}
|
}
|
||||||
return this.put(value);
|
return this.put(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put or replace a collection's elements in the JSONArray.
|
||||||
|
*
|
||||||
|
* @param collection
|
||||||
|
* A Collection.
|
||||||
|
* @return this.
|
||||||
|
*/
|
||||||
|
public JSONArray putAll(Collection<?> collection) {
|
||||||
|
this.addAll(collection);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Put or replace an array's elements in the JSONArray.
|
||||||
|
*
|
||||||
|
* @param array
|
||||||
|
* Array. If the parameter passed is null, or not an array, an
|
||||||
|
* exception will be thrown.
|
||||||
|
* @return this.
|
||||||
|
*
|
||||||
|
* @throws JSONException
|
||||||
|
* If not an array or if an array value is non-finite number.
|
||||||
|
* @throws NullPointerException
|
||||||
|
* Thrown if the array parameter is null.
|
||||||
|
*/
|
||||||
|
public JSONArray putAll(Object array) throws JSONException {
|
||||||
|
this.addAll(array);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a JSONPointer using an initialization string and tries to
|
* Creates a JSONPointer using an initialization string and tries to
|
||||||
@ -1500,6 +1519,45 @@ public class JSONArray implements Iterable<Object> {
|
|||||||
public boolean isEmpty() {
|
public boolean isEmpty() {
|
||||||
return this.myArrayList.isEmpty();
|
return this.myArrayList.isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add a collection's elements to the JSONArray.
|
||||||
|
*
|
||||||
|
* @param collection
|
||||||
|
* A Collection.
|
||||||
|
*/
|
||||||
|
private void addAll(Collection<?> collection) {
|
||||||
|
this.myArrayList.ensureCapacity(this.myArrayList.size() + collection.size());
|
||||||
|
for (Object o: collection){
|
||||||
|
this.myArrayList.add(JSONObject.wrap(o));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an array's elements to the JSONArray.
|
||||||
|
*
|
||||||
|
* @param array
|
||||||
|
* Array. If the parameter passed is null, or not an array, an
|
||||||
|
* exception will be thrown.
|
||||||
|
*
|
||||||
|
* @throws JSONException
|
||||||
|
* If not an array or if an array value is non-finite number.
|
||||||
|
* @throws NullPointerException
|
||||||
|
* Thrown if the array parameter is null.
|
||||||
|
*/
|
||||||
|
private void addAll(Object array) throws JSONException {
|
||||||
|
if (array.getClass().isArray()) {
|
||||||
|
int length = Array.getLength(array);
|
||||||
|
this.myArrayList.ensureCapacity(this.myArrayList.size() + length);
|
||||||
|
for (int i = 0; i < length; i += 1) {
|
||||||
|
this.put(JSONObject.wrap(Array.get(array, i)));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw new JSONException(
|
||||||
|
"JSONArray initial value should be a string or collection or array.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new JSONException in a common format for incorrect conversions.
|
* Create a new JSONException in a common format for incorrect conversions.
|
||||||
|
@ -225,6 +225,44 @@ public class JSONArrayTest {
|
|||||||
expected.similar(jaObj));
|
expected.similar(jaObj));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests consecutive calls to putAll with array and collection.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void verifyPutAll() {
|
||||||
|
final JSONArray jsonArray = new JSONArray();
|
||||||
|
|
||||||
|
// array
|
||||||
|
int[] myInts = { 1, 2, 3, 4, 5 };
|
||||||
|
jsonArray.putAll(myInts);
|
||||||
|
|
||||||
|
assertEquals("int arrays lengths should be equal",
|
||||||
|
jsonArray.length(),
|
||||||
|
myInts.length);
|
||||||
|
|
||||||
|
for (int i = 0; i < myInts.length; i++) {
|
||||||
|
assertEquals("int arrays elements should be equal",
|
||||||
|
myInts[i],
|
||||||
|
jsonArray.getInt(i));
|
||||||
|
}
|
||||||
|
|
||||||
|
// collection
|
||||||
|
List<String> myList = Arrays.asList("one", "two", "three", "four", "five");
|
||||||
|
jsonArray.putAll(myList);
|
||||||
|
|
||||||
|
int len = myInts.length + myList.size();
|
||||||
|
|
||||||
|
assertEquals("arrays lengths should be equal",
|
||||||
|
jsonArray.length(),
|
||||||
|
len);
|
||||||
|
|
||||||
|
for (int i = 0; i < myList.size(); i++) {
|
||||||
|
assertEquals("collection elements should be equal",
|
||||||
|
myList.get(i),
|
||||||
|
jsonArray.getString(myInts.length + i));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verifies that the put Collection has backwards compatibility with RAW types pre-java5.
|
* Verifies that the put Collection has backwards compatibility with RAW types pre-java5.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user