ROKU: ассоциативный массив с несколькими значениями

У меня есть вопрос из 2 частей, и я надеюсь, что кто-то может мне помочь.

Я пытаюсь понять, как передать массив лет с моего сервера на мой код ROKU. Это будет переменное количество лет, а это означает, что в массиве не всегда будет одинаковое количество элементов.

Мне нужно выяснить, как настроить массив, а затем как его проанализировать в BrightScript.

Вот пример того, что у меня есть до сих пор. У меня есть счет, но еще нужно добавить все годы.

Список лет 1998,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014

{
"Items" : [
  {
    "name": "count",
    "value": "13"
  }
]}

Как только он будет получен в моем коде ROKU, мне нужно будет перебрать годы и отобразить их по одному в строке. (У меня уже есть часть отображения. Мне просто нужна помощь, чтобы узнать, как добраться до элементов массива.)

Поскольку для массивов BrightScript так мало полезной документации, я надеюсь, что кто-то с большим опытом сможет ответить на этот вопрос, и что это поможет кому-то еще в будущем.


person Kenny    schedule 25.04.2014    source источник
comment
Вы пробовали использовать ParseJSON на Roku?   -  person Mike    schedule 25.04.2014


Ответы (2)


Вам не нужно делать ничего из этого. Просто отправьте массив JSON, и Roku проанализирует его:

BrightScript Debugger> myJSON = "[1998,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014]" 
BrightScript Debugger> ? type(myJSON)
String

BrightScript Debugger> arr = parseJSON(myJSON)
BrightScript Debugger> ? type(arr)
roArray

Вполне допустимо иметь массив в качестве элемента верхнего уровня текста json («Текст JSON — это сериализованный объект или массив». per RFC 4627). Вы также можете сделать это с фиктивным объектом (но зачем?): arr = parseJSON(" {"years": [1998, 2003]} ").years

person Nas Banov    schedule 26.04.2014
comment
Спасибо. Я знал, что должен быть более простой способ. Мне просто нужно было, чтобы кто-то показал мне. :о) - person Kenny; 28.04.2014

Вот как я это решил:

Множество:

{ 
 "Items" : [ 
     { "value": "2014" } , 
     { "value": "2013" } , 
     { "value": "2012" } , 
     { "value": "2011" } , 
     { "value": "2010" } , 
     { "value": "2009" } , 
     { "value": "2008" } , 
     { "value": "2007" } , 
     { "value": "2006" } , 
     { "value": "2005" } , 
     { "value": "2004" } , 
     { "value": "2003" } , 
     { "value": "1998" } 
   ]
} 

Код BrightScript для его разбора:

    arr = CreateObject("roArray",json.Items.count(),false)

    for each item in json.Items
       thisItem = {
        value: item.value         
       }
       arr.push(thisItem)
    end for
    return arr

Я надеюсь, что это поможет кому-то еще в будущем.

person Kenny    schedule 25.04.2014