Home > Software design >  javascript - How to get nested object from a FormData object [object Object]
javascript - How to get nested object from a FormData object [object Object]

Time:04-21

I want to get the entire nested object (with all the props) of a value that is stored in a FormData. This is possible?

Example

const formData = new FormData();
formData.append('k1', 123);
formData.append('k2', 'ABC');
formData.append('k3', {
  a: 1,
  b: '2'
});

data = {};
formData.forEach((value, key) => {
  console.log(`Key: ${key}`, {
    key,
    value,
    type: typeof(value),
    getResult: formData.get(key),
    getAllResult: JSON.stringify(formData.getAll(key))
  });

  data[key] = value;
});

console.warn('Final result', {
  data
});
.as-console-wrapper {
    max-height: 100% !important;
}

There is a way to capture the keys and values of the k3 without using jQuery or any external library?

CodePudding user response:

Ok, so this isn't quite what you're after, but here goes. If you want to pass in an object for your k3 value, then you'll need to stringify it first. You'll then need to parse it back out to an object wherever you want to use it. I've updated your code above to stringify the value, and attempt to parse it back out in your debugging (just so that you can see it)

const formData = new FormData();
formData.append('k1', 123);
formData.append('k2', 'ABC');
formData.append('k3', JSON.stringify({
  a: 1,
  b: '2'
}));

data = {};
formData.forEach((value, key) => {
  console.log(`Key: ${key}`, {
    key,
    value,
    type: typeof(value),
    rawResult: formData.get(key),
    potentialObjResult: (function(val){
         let potential = undefined;
         try {
            potential = JSON.parse(val);
         } catch(ex){
             console.log('could not parse: <'   val   '> as JSON');
         }
         return potential;
     })(formData.get(key))
    });
  data[key] = value;
});

console.warn('Final result', {
  data
});

  • Related