2016-06-23 10 views
-2
var myvar = ' 
    myname({ "country":{  "cities":[ {"id":"3", "population":"3700"},{"id":"5", "population":"3730"}] } });'; 

So dass myvar eine Zeichenfolge ist.Array aus String extrahieren, das ein gültiger JSON ist

So erhalten Sie citiesArr Array von city Objekte von myvar?

+7

nur eine Meinung, ich sehe keine [json] (http://json.org/). –

+1

Siehe http://stackoverflow.com/questions/4935632/parse-json-in-javascript und https://msdn.microsoft.com/en-us/library/cc836466(v=vs.85).aspx – Jaiprakash

+0

Es ist kein JSON in diesem Post. 'myvar' enthält eine Zeichenfolge, die anscheinend ein JS-Code ist. In diesem Code haben Sie einen Aufruf an eine Funktion, an die Sie ein JS-Objektliteral übergeben. – JAAulde

Antwort

1

Machen Sie es gültig JSON zuerst durch Entfernen myname( am Anfang und ); am Ende, verwenden Sie String#replace dafür. Danach analysieren Sie die Zeichenfolge mit JSON.parse Methode und erhalten Sie die gewünschten Daten.

var myvar = 'myname({ "country":{  "cities":[ {"id":"3", "population":"3700"},{"id":"5", "population":"3730"}] } });'; 
 

 
console.log(JSON.parse(myvar.replace(/^\s*\w+\(|\);$/g, '')).country.cities);

1

dies ist kein JSON-Objekt, eine Funktion enthält, JSON ist nur ein Javascript-Objekt.

dies erhalten Sie eval verwenden müssen möglicherweise, obwohl ich empfehlen nicht.

var myvar = 'myname({ "country":{  "cities":[ {"id":"3", "population":"3700"},{"id":"5", "population":"3730"}] } });'; 
 

 
function myname(jsonObj) { 
 
    console.log(jsonObj) 
 
} 
 

 
eval(myvar); //will log the whole object.

1

Ändern Sie Ihre json zu

var myvar = { "Land": { "Städte": [{ "id": "3", "Bevölkerung": "3700 "}, {" id ":" 5 "," Bevölkerung ":" 3730 "}]}};

und Sie können die Städte als myvar.country [ "Städte"]

1

JSON ist gültig JavaScript, aber nicht alle gültigen JavaScript ist valid JSON.

Als Nina in den Kommentaren zu der Frage hingewiesen, die Zeichenfolge, die Sie in Ihrer Frage eingefügt haben JavaScript könnte gültig sein, aber es ist nicht gültig JSON.

Nachdem Sie dieses Problem behoben haben, können Sie use this solution to parse your JSON:

var myvar = '{"country":{"cities":[{"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]}}'; 
var theData = JSON.parse(myvar); 

Wie citiesArr Array von Stadt Objekte aus myvar zu bekommen?

Sobald Sie JSON.parse(...) verwendet haben, um ein Objekt zu kommen, können Sie es verwenden, wie Sie in der Regel ein Objekt verwenden würde:

var myvar = '{"country":{"cities":[{"id":"3", "population":"3700"},{"id":"5", "population":"3730"}]}}'; 
 
var theData = JSON.parse(myvar); 
 
var cities = theData.country.cities; 
 
console.log(cities);

Wenn Sie nicht, wenn es darum

01: die Zeichenfolge von einem dritten (wie eine Datei oder einen Web-Server), dann können Sie nur den Bau des Objekts die normale Art und Weise anstatt zu versuchen, Ketten von JSON zu verwenden, überhaupt zu prüfen,