Just to throw another method into the mix here, I'd like to recommend taking a look at Gson. Gson is a library that makes serialization to and deserialization from Java objects a snap. For example, with your string, you could do this:
// Declare these somewhere that is on the classpath
public class ArrayItem{
public int id;
public double att1;
public boolean att2;
}
public class Container{
public List<ArrayItem> myArray;
}
// In your code
Gson gson = new Gson();
Container container = gson.fromJson(json, Container.class);
for(ArrayItem item : container.myArray){
System.out.println(item.id); // 1, 2, 3
System.out.println(item.att1); // 14.2, 13.2, 13.0
System.out.println(item.att2); // false, false, false
}
Similarly, you can go backwards very easily too.
String jsonString = gson.toJson(container);
// jsonString no contains something like this:
// {"myArray":[{"id":1,"att1":14.2,"att2":false},{"id":2,"att1":13.2,"att2":false},{"id":3,"att1":13.0,"att2":false}]}
The primary benefit that using something like Gson provides is that you can now use all of Java's type checking by default, instead of having to manage attribute names and types yourself. It also allows you to do some fancy stuff like replicating type hierarchies that make managing large numbers of json messages a snap. It works great with Android, and the jar itself is tiny and doesn't require any additional dependencies.