Using LitJson in unity3d

12.1k Views Asked by At

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 memberLitJson.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);

    }

}

any thoughts?

4

There are 4 best solutions below

0
On BEST ANSWER

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();)

0
On

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}]");
0
On

About question

  1. if you want to access js code in c# script ,you should place the js code int Plugins folder, and vice versa.

  2. 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

0
On

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.