2015-07-10 25 views
0

我怎樣才能創建一個JSON與逗號分隔的許多小數據集?生成一組數據到Json而不是一個大的混合Json

而不是由雙大括號括起來的一個大Json?

我確實收到一個Json和php,我使用foreach來循環它,使得很多數據處理在裏面。

然後生成一個新的Json,只是爲了避免在客戶端的數據處理,這將通過angularjs ng-repeat進行處理。

所有JSON數據被混合到一個大的JSON集(雙大括號內)

我的目標是分成小數據集。

我可以使用NrType屬性。在這個腳本中,NrType接收最後一個屬性,只有最後一個屬性可用。

//The php script 

    $arr = json_decode($returnedJson); //The original json to be pre-processed 
    $processedData = "[]"; 
    $processedJson = json_decode($processedData,true); 

    foreach($arr as $key=>$value) { 
     foreach($value as $vkey=>$vvalue) {    

      if($value[$i]->NrType == 1) { 

       $VlMIni  = $value[$i]->QttyInitial; 
       $VlMSub  = $value[$i]->QttyPeriod + $value[$i]->QttyRealAfter; 
       $VlMRec  = $value[$i]->RealValue; 
       $VlMTotal += $VlMesRece; 
       //much more data processing going on here ... 

      } elseif($value[$i]->NrType == 2) { 

      . 
      . 
      . 
      //and much more data processing going on here ... 
     } 
    } 

    //simple data atribution here 
    $processedJson['labelDesIni']  = 'Instruments'; 
    $processedJson['labelValueMIni'] = $lblVlMIni; 
    $processedJson['labelValuePIni'] = $lblVlPlIni; 
    $processedJson['labelValueAIni'] = $lblVlAIni; 
    $processedJson['labelValuePAIni'] = $lblVlPAIni; 
    $processedJson['labelValuePercInic'] = $lblVlPercInic; 
    $processedJson['labelValuePerc2Inic'] = $lblVlPerc2Inic; 

    //much more data atribution ... 

    echo json_encode($processedJson); //the new hgenerated Json 

生成的JSON:

{ 
    labelDesI: "Inspection", 
    labelValueMI: "2357", 
    labelValuePlI: "3914066", 
    labelValueAI: "1389406", 
    labelValuePAI: "2431425", 
    labelValuePercI: 57.143691456656, 
    labelValuePerc2I: 35.497766261478, 
    labelDesR: "Instruments", 
    labelValueMR: "734.54", 
    labelValuePR: "819.14", 
    labelValueAR: "660.05", 
    labelValuePAR: "877.94", 
    labelValuePercR: 80.087, 
    labelValuePerc2R: 44.739, 
    labelDesAcfi: "Fiscalização", 
    labelValueMAcfi: "343", 
    labelValuePlAcfi: "29907", 
    labelValueAAcfi: "16718", 
    labelValuePAAcfi: "16493", 
    labelValuePercAcfi: 101.36421512157, 
    labelValuePerc2Acfi: 55.899956531916, 
    labelDesT: "Totals", 
    labelValueMT: 365.59, 
    labelValuePlT: 547.62, 
    labelValueAnT: 909.63, 
    labelValuePAnT: 957.63, 
    labelValuePercT: 22949, 
    labelValuePerc2T: 25065 
} 

所述期望的格式將是這樣:

{ 
    label: "Inspection", 
    labelValue1: "2357", 
    labelValue2: "3914066", 
    labelValue3: "1389406", 
    labelValue4: "2431425", 
    labelValue5: 57.1456656, 
    labelValue6: 35.4961478 
}, 
{ 
    labelDesR: "Instruments", 
    labelValue1: "734.54", 
    labelValue2: "819.14", 
    labelValue3: "660.05", 
    labelValue4: "877.94", 
    labelValue5: 80.087, 
    labelValue6: 44.739 
}, 
{ 
    labelDesT: "Totals", 
    labelValue1: 365.59, 
    labelValue2: 547.62, 
    labelValue3: 909.63, 
    labelValue4: 957.63, 
    labelValue5: 22949, 
    labelValue6: 25065 
} 

Thank's預先

回答

1

單獨生成所有的對象,創建一個這些對象的數組和json_encode數組:

$processedJsonElement[] = ['labelDesT' => "Totals", 'labelValue1' => $whatTheValueIs, . . .]; 

,並把它添加到你的主要目標:

$processedJson[] = $processedJsonElement; 

你要代表的Json的每個部分做到這一點。不知道你是如何構造你的Foreach循環的,因爲你的代碼與輸出不匹配,但是你構造的任何東西都是你在調用json_encode時會輸出的內容。

基本上,你需要構造你的foreach循環,以便能夠將你希望表示爲一個json對象數組的對象進行劃分。

+0

我嘗試直接添加一個索引,如下所示:** $ processedJson [11] ['label1'] \t = $ label1; **並生成劃分部分,我需要謝謝@eggmaters –

+0

甚至更​​好。別客氣。如果需要,您可以將其作爲接受的答案進行檢查。 – eggmatters

+0

謝謝!你的回答對我很有幫助。 –