He buscado mucho en JSON Parsing en Android, pero no pude convencerme del todo. De hecho, tengo una idea breve pero no tan clara todavía con respecto a JSON Parsing.Análisis de JSON en Android
¿Cómo implementar el análisis JSON en la aplicación?
He buscado mucho en JSON Parsing en Android, pero no pude convencerme del todo. De hecho, tengo una idea breve pero no tan clara todavía con respecto a JSON Parsing.Análisis de JSON en Android
¿Cómo implementar el análisis JSON en la aplicación?
Esta es una muy simple JSON cadena
{"key1":"value1","key2":"value2"}
el fin de obtener valores para que utilice JSONObject
así:
JSONObject json_obj=new JSONObject(your json string);
String value1=json_obj.getString("key1");
String value2=json_obj.getString("key2");
Esta es una cadena json ligeramente compleja
[{"key1":"value1","key2":"value2"},{"key1":"value1","key2":"value2"}]
Con el fin de extraer los valores de este uso JSONArray
JSONArray jArray=new JSONArray(your json string);
for(int i=0;i<(jArray.length());i++)
{
JSONObject json_obj=jArray.getJSONObject(i);
String value1=json_obj.getString("key1");
String value2=json_obj.getString("key2");
}
Espero que esto ayude un poco ...........
Puede usar el paquete org.json
, incluido en el SDK.
Ver aquí: http://developer.android.com/reference/org/json/JSONTokener.html
Ver: http://developer.android.com/reference/org/json/package-summary.html
En primer lugar, se va a trabajar con JSONArray y JSONObject.
ejemplo simple:
try {
JSONObject json = new JSONObject(jsonString);
int someInt = json.getInt("someInt");
String someString = json.getString("someString");
} catch (JSONException e) {
Log.d(TAG, "Failed to load from JSON: " + e.getMessage());
}
Una opción más: use Jackson.
Uso simple; si usted tiene un POJO que se unen a:
ObjectMapper mapper = new ObjectMapper(); // reusable
MyClass value = mapper.readValue(source, MyClass.class); // source can be String, File, InputStream
// back to JSON:
String jsonString = mapper.writeValue(value);
a un mapa:
Map<?,?> map = mapper.readValue(source, Map.class);
oa un árbol: (similar a lo que ofrece por defecto paquete org.json Android)
JsonNode treeRoot = mapper.readTree(source);
y más ejemplos se pueden encontrar en http://wiki.fasterxml.com/JacksonInFiveMinutes.
Beneficios en comparación con otros paquetes es que es muy rápido; muy flexible y versátil (POJOs, maps/lists, json trees, incluso el analizador de transmisión), y se desarrolla activamente.
Esta clase construir el objeto JSON:
public class CreateJSON {
private JSONArray mStudArray;
private JSONObject mStudObject;
Student [] student=new Student[3] ;
public CreateJSON() {
}
public void initData() {
//date wirte in student array
student[0]=new Student();
student[0].setmStudName("Vikas");
student[0].setmPhoneNo("1234567890");
student[0].setmRollNo(1);
student[1]=new Student();
student[1].setmStudName("Rahul");
student[1].setmPhoneNo("1234567890");
student[1].setmRollNo(2);
student[2]=new Student();
student[2].setmStudName("Raj");
student[2].setmPhoneNo("1234567890");
student[2].setmRollNo(3);
}
//student array converts to json array
public String writeDataTOJOSON() {
//JONS array created here
mStudArray=new JSONArray();
initData();
for(int i=0;i<3;i++) {
mStudArray.put(createJOSNObject(student[i]));
}
return mStudArray.toString();
}
//student object converted into json object
public JSONObject createJOSNObject(Student student) {
try {
mStudObject=new JSONObject();
mStudObject.put(Constants.NAME,student.getmStudName());
mStudObject.put(Constants.PHONE_NUMBER,student.getmPhoneNo());
mStudObject.put(Constants.ROLL_NUMBER,student.getmRollNo());
} catch (JSONException e) {
e.printStackTrace();
}
return mStudObject;
}
}
// Esta clase de impresión creados JSON
public class PrintJOSN {
private CreateJSON createJSON;
private JSONArray mStudnetArray;
public String printJSONData() {
createJSON=new CreateJSON();
//JSONArray created here.
String jons=createJSON.writeDataTOJOSON();
//JONS in String fomart
Logger.debug("json"+mStudnetArray);
//JOSN array create from string
try {
mStudnetArray=new JSONArray(jons);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
//parse array parse here
for(int i=0;i<3;i++) {
try {
JSONObject studentObj=(JSONObject) mStudnetArray.get(i);
String name=studentObj.getString("name");
String phone=studentObj.getString("phone_number");
Integer rollnumber=studentObj.getInt("roll_number");
Logger.debug("Student Object::: "+name+" "+phone+" "+rollnumber);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}
}
// actvity principal modelo
public class JSONParserActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PrintJOSN printJOSN=new PrintJOSN();
printJOSN.printJSONData();
}
}
Estudiante:
public class Student {
private String mStudName;
private String mPhoneNo;
private Integer mRollNo;
public String getmStudName() {
return mStudName;
}
public void setmStudName(String mStudName) {
this.mStudName = mStudName;
}
public String getmPhoneNo() {
return mPhoneNo;
}
public void setmPhoneNo(String mPhoneNo) {
this.mPhoneNo = mPhoneNo;
}
public Integer getmRollNo() {
return mRollNo;
}
public void setmRollNo(Integer mRollNo) {
this.mRollNo = mRollNo;
}
}
constante de clase: Clase
public class Constants {
public static final String NAME="name";
public static final String ROLL_NUMBER="roll_number";
public static final String PHONE_NUMBER="phone_number";
}
Logger:
public class Logger {
public static final String APP_ID = "androidapp";
public static String logDir = "/androidapp";
public static String logFileName = "/log.txt";
public static boolean writeLogsToFile = false;
public static final int LOG_LEVEL_VERBOSE = 4;
public static final int LOG_LEVEL_DEBUG = 3;
public static final int LOG_LEVEL_INFO = 2;
public static final int LOG_LEVEL_ERROR = 1;
public static final int LOG_LEVEL_OFF = 0;
public static final int CURRENT_LOG_LEVEL = LOG_LEVEL_DEBUG;
public static void log(String message, int logLevel) {
if (logLevel > CURRENT_LOG_LEVEL) {
return;
} else {
Log.v(APP_ID, message);
if (writeLogsToFile) {
writeToFile(message);
}
}
}
private static void writeToFile(String message) {
try {
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + logDir);
dir.mkdirs();
File file = new File(dir, logFileName);
PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(file, true), 8 * 1024));
writer.println(APP_ID + " " + new Date().toString() + " : " + message);
writer.flush();
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void verbose(String message) {
log(message, LOG_LEVEL_VERBOSE);
}
public static void debug(String message) {
log(message, LOG_LEVEL_DEBUG);
}
public static void error(String message) {
log(message, LOG_LEVEL_ERROR);
}
public static void info(String message) {
log(message, LOG_LEVEL_INFO);
}
}
por confirmar su registro, se mostrará JSON y JSON creado impresa.
"JSONObject json = new JSONObject (jsonString);" –
Para qué sirve el "(jsonString)" en la línea anterior. –
@david: esta es la cadena que contiene la información codificada en JSON. – adamk