7 Stimmen

wie ändert man json key:value

//my json data    
var jsndata = "{ "id": "5001", "type": "None" },
            { "id": "5002", "type": "Glazed" },
            { "id": "5005", "type": "Sugar" },
            { "id": "5003", "type": "Chocolate" },
            { "id": "5004", "type": "Maple" },
            { "id": "5009", "type": "Juice" }"

Wie würde ich die "type": "Chocolate" => "type": "only water"
oder "id": "5005" => "id": "1234"

Meine Liste ist sehr lang. Ich muss einen Wert erhalten oder setzen?

Hinweis: Meine Liste ist dynamisch und sortiert immer nach ID oder Typ

Will jsndata.id['5003']='1234' es ändern?

var getval = jsndata.id['5005'].type get val..(Wert Zucker) ?

22voto

St.Woland Punkte 5297
<script>
var json = [{ "id": "5001", "type": "None" },
            { "id": "5002", "type": "Glazed" },
            { "id": "5005", "type": "Sugar" },
            { "id": "5003", "type": "Chocolate" },
            { "id": "5004", "type": "Maple" },
            { "id": "5009", "type": "Juice" }];
/**
 * The function searches over the array by certain field value,
 * and replaces occurences with the parameter provided.
 *
 * @param string field Name of the object field to compare
 * @param string oldvalue Value to compare against
 * @param string newvalue Value to replace mathes with
 */
function replaceByValue( field, oldvalue, newvalue ) {
    for( var k = 0; k < json.length; ++k ) {
        if( oldvalue == json[k][field] ) {
            json[k][field] = newvalue ;
        }
    }
    return json;
}

/**
 * Let's test
 */
console.log(json);

replaceByValue('id','5001','5010')
console.log(json);

replaceByValue('type','Chocolate','only water')
console.log(json);
</script>

2voto

Baggz Punkte 16757

をご覧ください。 Kneifen ein (Multi-)Datenersetzungswerkzeug für JavaScript-Objekte/JSON. Hier ist ein kurzes Beispiel, wie pinch.js könnte in Ihrem Fall verwendet werden:

var data = [
  {
    id: 5001,
    type: 'None'
  },
  {
    id: 5002,
    type: 'Glazed'
  },
  {
    id: 5005,
    type: 'Sugar'
  },
  {
    id: 5003,
    type: 'Chocolate'
  },
  {
    id: 5004,
    type: 'Maple'
  },
  {
    id: 5009,
    type: 'Juice'
  }
];

pinch(data, '/id/', function(path, key, value) {
  return (value === 5001) ? 5010 : value;
});

1voto

zero8 Punkte 1839

Versuchen Sie dies. Vereinfacht.

var json = [{ "id": "5001", "type": "None" },
                { "id": "5002", "type": "Glazed" },
                { "id": "5005", "type": "Sugar" },
                { "id": "5003", "type": "Chocolate" },
                { "id": "5004", "type": "Maple" },
                { "id": "5009", "type": "Juice" }];           

        var JsonObject= JSON.parse(json);
            $.each(JsonObject, function(key,value) {
                if( JsonObject[key].id=='5005' ){
                    JsonObject[key].id='1234';
                }             

                if( JsonObject[key].type=='Chocolate' ){
                    JsonObject[key].type='Only water';
                }

            });

1voto

HattrickNZ Punkte 3785

Die obige Funktion geändert, um alle Werte einer Taste zu ändern und sie um 1 zu erhöhen. Und Sie können das jsonObj übergeben

function replaceByValue( jsonObj, field, oldvalue, newvalue ) {
    for( var k = 0; k < jsonObj.length; ++k ) {
             jsonObj[k][field] = (newvalue *1)+k;

    }
    return jsonObj;
}

//Beispiel

var json = [{ "id": "5001", "type": "None" },
                { "id": "5002", "type": "Glazed" },
                { "id": "5005", "type": "Sugar" },
                { "id": "5003", "type": "Chocolate" },
                { "id": "5004", "type": "Maple" },
                { "id": "5009", "type": "Juice" }]; 

json; 

replaceByValue( json, "id", "na", 123 );

json;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X