2014-01-30 43 views
0

我在堆棧搜索了很多與谷歌試圖找到這似乎很容易回答,但我還是堅持了下來增值JSON標題

我寫的代碼來編碼JSON與我想要的值從。我想一個鍵/值添加到JSON

的JSON是如下結構

{ 
    - files: [ 
     { 
     title: "works", 
     - tracks: [ 
      { 
      title: "File", 
      format: "mp3" 
      } 
     ] 
     }, 
    -{ 
     title: "season1", 
     tracks: [ 
     { 
      title: "Button-1", 
      format: "wav" 
     }, 
    -{ 
     title: "Beep-9", 
     format: "wav" 
    } 
    ] 
    } 
    ] 
} 

我想補充到,在開始鍵和其值下的JSON作爲屬性標題文件,我的意思是可以通過代碼作爲

JSON被讀取[文件] [new_key]

我試圖設置該值這樣

$ json ['new_key'] =「new_value」;

但這會導致增加數以JSON數組,我不知道他們爲什麼編號

enter image description here

這個數字影響JSON作爲JSONModel我的閱讀方式在我的iOS應用 所以,我希望你能幫助我 在此先感謝

+0

你究竟有什麼,數組/對象或json字符串? – jeroen

+0

也發佈原始數據示例,圖像不可用。 –

+0

@jeroen我有從url得到的JSON字符串 – Twinkle

回答

0

假設你想添加的新值因文件而異,你需要通過$json[files]循環並插入它們每個鍵/值對。

<?php 

for($i=0; $i<count($json); $i++) 
    $json[files][$i]["new_key"] = "value"; 

?> 
+0

我只需要一次在json – Twinkle

+0

在這種情況下,'$ json [files] ['new_key'] =「new_value」;'應該可以正常工作。無論如何,除了它們現在可以在JSON模型中看到(由於PHP實現了'json_encode()'),數字就在那裏了。\ –

+0

當我想添加值時,II沒有標題,我有該數組包含所需的數據,我希望在使用echo'{「files」:'.json_encode($ arr2)'之前添加kay對。' }'; – Twinkle

0

你得到的數字出現的原因是因爲你要添加一鍵數組(其功能或多或少地在JS的列表)。所以在你基本上把對象「文件」作爲一個像其他任何JS數組一樣索引的對象列表之前。當您添加密鑰時,JS只是將您的密鑰添加到當前密鑰的末尾(在您的案例0和1中)。

似乎你有一個多媒體對象的列表,其中每個對象都有一個標題和一個軌道列表。爲您解決問題的最簡單的方法是如下:

$fileItem['title'] = 'works'; 
$fileItem['tracks'] = array(
    array(
     'title' => 'File', 
     'format' => 'mp3' 
    ) 
); 
$json['files'][] = $fileItem; 

$fileItem['title'] = 'season1'; 
$fileItem['tracks'] = array(
    array(
     'title' => 'Button-1', 
     'format' => 'wav' 
    ), 
    array(
     'title' => 'Beep-9', 
     'format' => 'wav' 
    ) 
); 
$json['files'][] = $fileItem; 

然後你JSON編碼,並返回它,你通常會。你也可以把上面的代碼放在一個循環中。我缺乏足夠的背景來推薦如何。

+0

是的,這是發生了什麼,但我沒有得到如何解決它(對不起)我最後使用這個回聲句子echo'{「files」:'。 json_encode($ ARR2)「。 }';其中$ arr2包含所需的數據,並應包含該值 – Twinkle

+0

您能幫我理解這裏的修復是什麼嗎?你想看到什麼結構? – clarkatron

+0

我的意思是如何避免出現數字 – Twinkle

0

我仍然不確定你到底有什麼,但似乎你正在試圖操縱json字符串。

如果做得正確,也可能是最有效的解決方案,但什麼也可以做的是:

  • 使用json_decode產生從JSON字符串數組;
  • 找到您要添加數據的正確部分/子數組;
  • 使用array_unshift預先添加新的鍵 - 值對;
  • 使用json_encode從您的完整數組中生成一個json字符串。
+0

可以在array_unshift中設置鍵和值嗎array_unshift($ arr,'key'=>'value');這不起作用 – Twinkle

+0

@Twinkle Hmmmmm,也許不是,在這種情況下,你將不得不使用array_merge或類似的東西... – jeroen