clases javascript para json
Por si alguno aún no sabe lo que es JSON, nada más que decir que es un formato de intercambio de datos ligero y fácilmente entendible para el ser humano (a menos que el chorizo sea muy grande claro :P). Un ejemplo de dato es:
["nombre":"Manolo","array1":["hola",4,"foo","bar","etc],”objetoJSON”:{“obj”:”valor”}]
this.key = new Array();
this.value = new Array();
this.addObject = function(key, value){
if(key==null)
key = “”;
if(value==null) value = “”;
this.key.push(key);
this.value.push(value);
};
// función que pasa a string
this.toString = function(){
var string = “”;
for(var i=0; i<this.key.length; i++){
if(i!=0) string+=”,”;
string+=’”‘+this.key[i]+’”:’;
// si es un string, se pone entre comillas
if((typeof this.value[i]) == “string”)
string+=’”‘+this.value[i]+’”‘;
else
string+=this.value[i];
}
return “{“+string+”}”;
};
// función para obtener un objeto de una posición concreta
this.getObject = function(index){
var ret = null;
if(0<=index && index<this.key.length)
ret = “{“+this.key[index]+”:”+this.value[index]+”}”;
return ret;
};
// Función para devolver una clave de una posición
this.getKey = function(index){
var ret=null;
if(0<=index && index<this.key.length)
ret=this.key[index];
return ret;
};
// Función para cambiar una clave que está en una posición concreta
this.setKey = function(index,key){
if(key==null) key = “”;
if(0<=index && index<this.key.length)
this.key[index]=key;
};
// Función que cambia una clave a partir de otra (cambia la primera que ve)
this.setKeyByName = function(old_key,new_key){
if(new_key==null) new_key = “”;
for(var i=0; i<this.key.length; i++)
if(this.key[i]==old_key){
this.key[i]=new_key;
// salgo porque solo modifica
// el primero que encuentra
break;
}
};
// obtiene el valor de una posición
this.getValue = function(index){
var ret=null;
if(0<=index && index<this.value.length)
ret=this.value[index];
return ret;
};
// Modifica el valor de una posición
this.setValue = function(index,value){
if(value==null) value = “”;
if(0<=index && index<this.value.length)
this.value[index]=value;
};
// Modifica el valor de un objeto con un valor concreto (el primero que se encuentre)
this.setValueByName = function(old_value,new_value){
if(new_value==null) new_value = “”;
for(var i=0; i<this.value.length; i++)
if(this.value[i]==old_value){
this.value[i]=new_value;
// salgo porque solo modifica
// el primero que encuentra
break;
}
}
// para ver el tipo de objeto que es
this.getType=”JSONObject”;
}
function JSONArray(){
this.elements = new Array();
// añade un item al array
this.addItem = function(value){
// si es un string lo entrecomilla
if((typeof value) == “string”)
value = ‘”‘+value+’”‘;
this.elements.push(value);
};
// pasa a string el array
this.toString = function(){
return “["+this.elements.join(",")+"]“;
};
// devuelve un item
this.getItem = function(index){
var ret = null;
if(0<=index && index<this.elements.length)
ret = this.elements[index];
return ret;
};
// cambia el valor de un item
this.setItem = function(index,item){
if(item==null) item=”";
if(0<=index && index<this.elements.length)
this.elements[index] = item;
};
// obtiene unos valores en un rango pedido: array.getRange(2,4)
this.getRange = function(from,to){
var ret = null;
if(from<=to && 0<=from && to<this.elements.length)
// a slice hay que decirle en el “to” que uno mas, porque es a partir
// de donde corta
ret = this.elements.slice(from,to+1);
return ret;
}
// para ver el tipo de objeto que es
this.getType=”JSONArray”;
}
// Ahora probamos ambas clases
// creamos el objeto: ‘{“obj1″:”valor1″,”obj2″:”valor2″,”obj3″:”valor3″}’;
// creamos el array: ‘["item1","item2","item3","item4"]‘;
var object = new JSONObject();
object.addObject(“key1″,”value1″);
object.addObject(“key2″,”value2″);
object.addObject(“key3″,”value3″);
object.addObject(“key4″,”value4″);
var array = new JSONArray();
array.addItem(2);
array.addItem(“item1″);
array.addItem(4);
array.addItem(“item2″);
document.write(object.toString()+”
“);
document.write(array.toString()+”
“);
object.addObject(“array!”,array);
document.write(object.toString()+”
“);
object.setKeyByName(“key3″,”3yek”);
document.write(object.toString()+”
“);
Las salidas que se obtienen son las siguientes:
[2,"item1",4,"item2"]
{“key1″:”value1″,”key2″:”value2″,”key3″:”value3″,”key4″:”value4″,”array!”:[2,"item1",4,"item2"]}
{“key1″:”value1″,”key2″:”value2″,”3yek”:”value3″,”key4″:”value4″,”array!”:[2,"item1",4,"item2"]}
No solo para enviar datos entre cualquier plataforma y lenguajes sirve JSON, usando esto con AJAX, tenemos lo que llaman JSON-RPC, sí las llamadas a procedimientos remotos utilizando como plataforma de intercambio de datos a JSON. De modo que, por ejemplo con el mundo Java, tenemos JSON-RPC-Java que es una tecnología que permite realizar comunicaciones Ajax entre el cliente y el servidor J2EE, hacer llamadas a funciones de clases Java desde JavaScript, con capacidad para serializar objetos Java y convertirlos en objetos JavaScript y todo ello, de forma transparente al programador. He encontrado un ejemplo bastante exhaustivo sobre este tema, con el cual veo una tontería escribir nada aquí, de modo que os pongo el enlace y si tenéis curiosidad pues le pegáis un vistacillo :D:
http://www.ateneatech.com/blog/json-rpc-java-comunicaciones-ajax-transparentes-tutorial-completo-y-ejemplos
- Publicado por iQuarK a las 06:16 pm
- Permalink de esta entrada
- Guardado en: Profesional
- Comentarios RSS de esta entrada
- TrackBack URI
Sin comentarios
Publicar comentario