Использование LitJson в unity3d - PullRequest
5 голосов
/ 09 марта 2011

2 вопроса.

1) Можно ли использовать библиотеку LitJson как есть во время написания сценариев в Javascript? Это действительно общий вопрос о возможности использования источника c # в источнике javascript.

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

    }

}

есть мысли?

Ответы [ 4 ]

5 голосов
/ 11 марта 2011

Я прошел через несколько библиотек Json в Unity3D. Единственное, что я обнаружил, у которого нет странных причуд сериализации / десериализации, и которые постоянно работают в iOS, WebPlayer и Editor: JsonFX JsonSerializer 1.4 .

Тем не менее, я думаю, что ваша проблема в том, что вам нужно создать экземпляр JsonReader, прежде чем вы сможете использовать его методы.

Что-то вроде этого может работать:

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

Edit:

Упс, я пропустил часть вашего вопроса. Вы должны быть в состоянии использовать любую управляемую сборку из UnityScript, как из C #. Вместо включения пространств имен в using, вы используете import. После этого код будет практически идентичен версии C #, за исключением того, как UnityScript определяет типы (var blah : Type = YadaYada();)

0 голосов
/ 17 января 2015

О вопросе

  1. если вы хотите получить доступ к js-коду в скрипте c #, вам следует поместить папку js code int Plugins, и наоборот.

  2. Object a = LitJson.JsonReader.Read(www.text);
    Я думаю, что JosnReader не является статическим классом, вам следует создать экземпляр нового объекта JsonRead, а затем получить доступ к Read (строковые данные) mehotd

0 голосов
/ 16 января 2015

Посмотрите на 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 голосов
/ 20 марта 2011

Hm.Вы пробовали Jayrock ?Его код выглядит нормально, но нет никакой документации, о которой можно было бы говорить, и автор доволен, оставив это так.

...