enter image description here

var string = 'job_category=IT^job_description=<p><span style="font-size: 18px;">Many other html attribute's </span></p>^job_type=2^qualification=2^EQ';

//oneline string to object starts here
function get_json_from_string(x) {
	var ob = {};
	var a = x.split("^");
	for( i = 0 ;  i < a.length ; i++){
		var t = a[i].split('=');
		ob[ t[0] ] = t[1];
	}
	return ob;
}
//oneline string to object ends here


var finalOutput = get_json_from_string(string); 
console.log(finalOutput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Je veux que le HTML soit la description_travail entière de la chaîne, mais lorsque j'utilise split, il casse jusqu'à = guillemet double.

Comment puis-je diviser correctement?

Résultats attendus valeur clé de l'objet:

job_description:"<p><span style="font-size: 18px;">Many other html attributes </span></p>"

Résultat actuel valeur clé de l'objet:

job_description:"<p><span style="
//font-size: 18px;">Many other html attributes </span></p>   this is cropping

Remarque Veuillez vérifier attentivement ma chaîne, elle peut contenir des citations simples et doubles

-4
Mr world wide 23 mai 2018 à 17:30

3 réponses

Meilleure réponse

Vous pouvez diviser sur le '^' puis diviser sur le '=', en prenant le premier élément comme clé, puis en joignant le reste par '=' pour la valeur.

var string = `job_category=IT^job_description=<p><span style="font-size: 18px;">Many other html attribute's </span></p>^job_type=2^qualification=2^EQ`;

//oneline string to object starts here
function get_json_from_string(x) {
  return x.split('^').reduce(function(result, token){
    var subtokens = token.split('=');
    result[subtokens[0]] = subtokens.slice(1).join('=');
    return result;
  }, {});
}
//oneline string to object ends here


var finalOutput = get_json_from_string(string); 
console.log(finalOutput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
1
Taplar 23 mai 2018 à 14:43

Vous allez vouloir rechercher les premiers = uniquement et ignorer les = suivants.

var string = 'job_category=IT^job_description=<p><span style="font-size: 18px;">Many other html attributes </span></p>^job_type=2^qualification=2^EQ'

//oneline string to object starts here
function get_json_from_string(x) {
	var ob = {};
	var a = x.split("^");
	for( i = 0 ;  i < a.length ; i++){
		var eq = a[i].indexOf('=')
		if(eq==-1){
			//no = in this part... handle it yourself
			continue;
		}
		var key = a[i].slice(0,eq)
		var value = a[i].slice(eq+1)
		ob[ key ] = value;
	}
	return ob;
}
//oneline string to object ends here


var finalOutput = get_json_from_string(string); 
console.log(finalOutput);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
1
Manuel Otto 23 mai 2018 à 14:38

Dans votre objet JSON en valeur "<p><span style="font-size: 18px;">Many other html attributes </span></p>", utilisez des guillemets simples (... style = 'font-size: 18px;' ...) au lieu de guillemets doubles.

-1
Marko Kastelec 23 mai 2018 à 14:34