2011-03-08 173 views
5

2个问题。在unity3d中使用LitJson

1)是否有可能在Javascript脚本编写时使用LitJson库?这真的是一个关于能够在javascript源代码中使用c#源代码的常见问题。

2)我是新来的C#dev。我似乎无法让LitJson启动并运行。下面的代码引发此错误: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); 

    } 

} 

有什么想法?

回答

5

我已经经历了Unity3D中的一堆Json库。我发现的唯一一个没有奇怪的序列化/反序列化怪癖,并且在iOS,WebPlayer和Editor中始终如一地工作是JsonFX JsonSerializer 1.4

这就是说,我认为你的问题是你必须在使用它的方法之前实例化一个JsonReader。

像这样的东西可能会奏效:

var reader = new LitJson.JsonReader(); 
Object a = reader.Read(www.text); 

编辑:

哎呦,我跳过你的问题的一部分。您应该能够使用UnityScript中的任何托管程序集,就像从C#一样。您可以使用import来代替包含using的命名空间。之后,代码实际上与C#版本相同,除了UnityScript定义类型的方式(var blah : Type = YadaYada();

0

嗯。你有没有试过Jayrock?它的代码看起来不错,但是没有任何文档可以说明,作者很满意要这样说。

0

看一看在LitJSON叉的Unity3D:


其实LitJson有一些问题,并不总是按预期工作,所以我创建了一个简单的JSON-Lib的,可以处理所有Unity3D类型,枚举和任意类。

在GitHub上找到它:Tiny-JSON

您可以使用它很简单:

// encode 
Animal a = new Animal(4); 
string json = Json.Encode(a); 

// decode 
IList<Animal> a = Json.Decode<IList<Animal>>("[{\"legs\":4}, {\"legs\":2}]"); 
0

关于问题

如果要访问C#脚本JS代码
  1. ,你应该放置js代码int Plugins文件夹,反之亦然。

  2. Object a = LitJson.JsonReader.Read(www.text);
    我觉得JosnReader不是一个静态类,你应该实例的新JsonRead对象,然后您可以访问读取(字符串数据)mehotd