5

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?

tpeczek
  • 23,867
  • 3
  • 74
  • 77
greggreg
  • 11,945
  • 6
  • 37
  • 52

4 Answers4

5

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

Calvin
  • 4,177
  • 1
  • 16
  • 17
0

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}]");
Gering
  • 3,010
  • 3
  • 21
  • 23
0

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

Rahul Patel
  • 5,858
  • 6
  • 46
  • 72
mmitang
  • 1
  • 2
0

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.