2016-05-12 5 views
0

Ich habe Javascript Array von Objekten mit Schlüssel und Wert darin. Ich habe so viele Daten im Array und ich möchte das gesamte Array in JSON konvertieren und dabei alle Daten in Array in ISOString-Format konvertieren. Ich kann nur JQuery-, UnderscoreJS- oder Momentz-Bibliotheken verwenden.Formatieren Sie Javascript Array in JSON, indem Sie alle Datumsangaben in ISOString-Format konvertieren

Initial Format meines Javascript-Array:

{ 
    "primaryPerformerId":"122418", 
    "primaryGroupingId":"63913", 
    "primaryCategoryId":"1", 
    "name":"Test Concert Event", 
    "venueId":"82", 
    "placeConfigs":[ 
     { 
     "placeConfigId":"1232392" 
     } 
    ], 
    "defaultLocale":"en_US", 
    "metas":[ 
     { 
     "templateId":"201", 
     "name":"Test Concert Event", 
     "locale":"en_US" 
     } 
    ], 
    "unknownEventDateIndicator":"false", 
    "unknownEventTimeIndicator":"false", 
    "eventStartTime":"05/18/2016 08:04 PM", 
    "trueOnSaleDate":"05/18/2016 08:04 PM", 
    "firstPresaleDate":null, 
    "status":"active", 
    "dynamicAttributes":[ 

    ], 
    "lastChanceDate":"05/18/2016 08:04 PM", 
    "onSaleDate":"05/15/2016 08:04 PM", 
    "confirmDate":"05/16/2016 08:04 PM", 
    "earliestPossibleInhandDate":"05/16/2016 08:04 PM", 
    "latestPossibleInhandDate":"05/18/2016 08:04 PM" 
} 

Erwartetes Format:

{ 
    "primaryPerformerId":"122418", 
    "primaryGroupingId":"63913", 
    "primaryCategoryId":"1", 
    "name":"Test Concert Event", 
    "venueId":"82", 
    "placeConfigs":[ 
     { 
     "placeConfigId":"1232392" 
     } 
    ], 
    "defaultLocale":"en_US", 
    "metas":[ 
     { 
     "templateId":"201", 
     "name":"Test Concert Event", 
     "locale":"en_US" 
     } 
    ], 
    "unknownEventDateIndicator":"false", 
    "unknownEventTimeIndicator":"false", 
    "eventStartTime":"2016-05-18T20:04:00.000Z", 
    "trueOnSaleDate":"2016-05-17T20:03:00.000Z", 
    "firstPresaleDate":null, 
    "status":"active", 
    "dynamicAttributes":[ 

    ], 
    "lastChanceDate":"2016-05-18T20:04:00.000Z", 
    "onSaleDate":"2016-05-12T23:38:18.775Z", 
    "confirmDate":"2016-05-11T23:38:18.775Z", 
    "earliestPossibleInhandDate":"2016-05-10T20:04:00.000Z", 
    "latestPossibleInhandDate":"2016-05-11T20:04:00.000Z" 
} 
+0

JSON des stringify ist rekursiv, so dass Sie die Daten nicht prep müssen. Das heißt, Daten sind nicht wirklich ein JSON-Typ, also müssen Sie sie auf parse() wiederbeleben() – dandavis

+0

Ich kann Ihre Antwort nicht verstehen. Ich habe JavaScript-Array im genannten initialen Format, ich möchte es in JSON konvertieren und es an den Server senden, in diesem Konvertierungsprozess muss ich alle Daten in Array in ISOString Format vor dem Senden an den Server konvertieren, das Ausgangsformat eingegeben wird durch Benutzer in mm/dd/JJJJ oder TT/MM/JJJJ-Format basierend auf dem Gebietsschema. – user1614862

+0

Richtig, also, Schleife und ersetze sie. –

Antwort

1

Dies sollte tun. Es verwendet Regex, um die Datumswerte und JSON.stringify mit einem benutzerdefinierten Handler zu finden, um alles zusammenzufassen. Ich möchte auch darauf hinweisen, dass damit die Zeitzone als Systemzeitzone berechnet wird, auf der dieses Skript läuft. Da die Ausgabezeit in UTC ist, möchten Sie vielleicht vorher sicherstellen, dass die Zeitzone korrekt ist.

var o = { 
 
    "primaryPerformerId":"122418", 
 
    "primaryGroupingId":"63913", 
 
    "primaryCategoryId":"1", 
 
    "name":"Test Concert Event", 
 
    "venueId":"82", 
 
    "placeConfigs":[ 
 
     { 
 
     "placeConfigId":"1232392" 
 
     } 
 
    ], 
 
    "defaultLocale":"en_US", 
 
    "metas":[ 
 
     { 
 
     "templateId":"201", 
 
     "name":"Test Concert Event", 
 
     "locale":"en_US" 
 
     } 
 
    ], 
 
    "unknownEventDateIndicator":"false", 
 
    "unknownEventTimeIndicator":"false", 
 
    "eventStartTime":"05/18/2016 08:04 PM", 
 
    "trueOnSaleDate":"05/18/2016 08:04 PM", 
 
    "firstPresaleDate":null, 
 
    "status":"active", 
 
    "dynamicAttributes":[ 
 

 
    ], 
 
    "lastChanceDate":"05/18/2016 08:04 PM", 
 
    "onSaleDate":"05/15/2016 08:04 PM", 
 
    "confirmDate":"05/16/2016 08:04 PM", 
 
    "earliestPossibleInhandDate":"05/16/2016 08:04 PM", 
 
    "latestPossibleInhandDate":"05/18/2016 20:04" 
 
}; 
 

 
document.body.innerText = JSON.stringify(o, function(key, value) { 
 
    var res; 
 
    if(res = /^\s*([0-9]{1,2})\s*\/\s*([0-9]{1,2})\s*\/\s*([0-9]{1,4})\s+([0-9]{1,2})\s*\:\s*([0-9]{1,2})(?:\s*(AM|PM))?\s*$/i.exec(value)) { 
 
     value = (o.defaultLocale === 'en_US' ? 
 
      new Date(res[3], res[1]-1, res[2], res[6] ? (res[6].toUpperCase() === 'PM' ? 12 : 0) + (res[4] === '12' ? 0 : parseInt(res[4])) : res[4], res[5]) : 
 
      new Date(res[3], res[2]-1, res[1], res[6] ? (res[6].toUpperCase() === 'PM' ? 12 : 0) + (res[4] === '12' ? 0 : parseInt(res[4])) : res[4], res[5]) 
 
      ).toISOString(); 
 
     } 
 
    return value; 
 
    });

+0

Warum der Downvote? –

+0

Jemand scheint die Antworten buchstäblich Sekunden nach der Veröffentlichung zu verwerfen. Meine wurde genau 3 Sekunden nach dem Posten abgelehnt. Ich habe die Zeitstempel verglichen ... Wahrscheinlich jemand, der extrem mürrisch ist. – Sumurai8

+0

Ich habe die Regex in meiner Antwort aktualisiert, um mit den Datumswerten, die analysiert werden, viel nachsichtiger zu sein. –

Verwandte Themen