Using LitJson in unity3d
2 questions.
1) Is it possible to use the LitJson library as is while scripting in Javascript? This is really a general question about being able to use c# source in javascript source.
2) I'm new to c# dev. I can't seem to get LitJson up and running. The following code throws this 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.ec开发者_Go百科honest.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);
}
}
any thoughts?
I've been through a bunch of Json libraries in Unity3D. The only one I've found that doesn't have weird serialization/deserialization quirks, and works consistently in iOS, WebPlayer, and Editor is JsonFX JsonSerializer 1.4.
That said, I think your problem is that you have to instantiate a JsonReader before you can use it's methods.
Something like this might work:
var reader = new LitJson.JsonReader();
Object a = reader.Read(www.text);
Edit:
Whoops, I skipped part of your question. You should be able to using any managed assembly from UnityScript, just like from C#. Instead of including namespaces with using
, you use import
. After that the code would be virtually identical to the C# version, except for the way UnityScript defines types (var blah : Type = YadaYada();
)
Hm. Have you tried Jayrock? Its code looks OK, but there isn't any documentation to speak of, and the author is satisfied to leave it that way.
About question
if you want to access js code in c# script ,you should place the js code int Plugins folder, and vice versa.
Object a = LitJson.JsonReader.Read(www.text);
I think JosnReader is not a static class,you should instance a new JsonRead Object and then you can access Read(string data) mehotd
Have a look at the LitJSON fork for Unity3D:
Actually LitJson has some issues and is not always working as expected, so I created a simple JSON-Lib that can handle all Unity3D Types, Enums and arbitrary classes.
Find it at GitHub: Tiny-JSON
You can use it very simple:
// encode
Animal a = new Animal(4);
string json = Json.Encode(a);
// decode
IList<Animal> a = Json.Decode<IList<Animal>>("[{\"legs\":4}, {\"legs\":2}]");
精彩评论