在unity3d中使用LitJson

时间:2011-03-08 22:29:12

标签: c# json unity3d litjson

2个问题。

1)在Javascript中编写脚本时是否可以按原样使用LitJson库?这是关于能够在javascript源代码中使用c#source的一般问题。

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

    }

}

有什么想法吗?

3 个答案:

答案 0 :(得分:5)

我经历过Unity3D中的一堆Json库。我发现的唯一一个没有奇怪的序列化/反序列化怪癖,并且在iOS,WebPlayer和编辑器中一致地工作是JsonFX JsonSerializer 1.4

那就是说,我认为你的问题是你必须先实例化一个JsonReader才能使用它的方法。

这样的事可能有用:

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

编辑:

哎呀,我跳过你的部分问题。您应该能够使用UnityScript中的任何托管程序集,就像使用C#一样。您可以使用using,而不是使用import包含名称空间。之后代码几乎与C#版本完全相同,但UnityScript定义类型的方式除外(var blah : Type = YadaYada();

答案 1 :(得分:0)

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

答案 2 :(得分:0)

查看Unity3D的LitJSON分支:


实际上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}]");