2 preguntas
1) ¿Es posible usar la biblioteca LitJson tal como está mientras se ejecutan secuencias de comandos en Javascript? Esta es realmente una pregunta general sobre poder usar la fuente c # en la fuente javascript.
2) Soy nuevo en c# dev. Parece que no puedo hacer que LitJson funcione. El siguiente código genera este error: An object reference is required to access non-static member LitJson.JsonReader.Read()''
using UnityEngine; using System.Collections; public class Loadr : MonoBehaviour { string url= "http://developer.echonest.com/api/v4/artist/images?api_key=N6E4NIOVYMTHNDM8J&id=ARH6W4X1187B99274F&format=json&results=1&start=0&license=unknown"; void Start (){ WWW www = new WWW(url); print(www.text); Object a = LitJson.JsonReader.Read(www.text); print(a.response.status); } }¿Alguna idea?
He revisado un montón de bibliotecas Json en Unity3D. El único que encontré que no tiene peculiaridades extrañas de serialización/deserialización y funciona de manera consistente en iOS, WebPlayer y Editor es JsonFX JsonSerializer 1.4 .
Dicho esto, creo que su problema es que debe crear una instancia de un JsonReader antes de poder usar sus métodos.
Algo como esto podría funcionar:
var reader = new LitJson.JsonReader(); Object a = reader.Read(www.text);Editar:
Vaya, me salteé parte de tu pregunta. Debería poder usar cualquier ensamblado administrado desde UnityScript, al igual que desde C#. En lugar de incluir espacios de nombres con using , usa import . Después de eso, el código sería prácticamente idéntico a la versión de C#, excepto por la forma en que UnityScript define los tipos ( var blah : Type = YadaYada(); )
Eche un vistazo a la bifurcación LitJSON para Unity3D:
En realidad, LitJson tiene algunos problemas y no siempre funciona como se esperaba, así que creé una JSON-Lib simple que puede manejar todos los tipos, enumeraciones y clases arbitrarias de Unity3D.
Encuéntrelo en GitHub: Tiny-JSON
Puedes usarlo muy simple:
// encode Animal a = new Animal(4); string json = Json.Encode(a); // decode IList<Animal> a = Json.Decode<IList<Animal>>("[{\"legs\":4}, {\"legs\":2}]");