Skip to content
Snippets Groups Projects

JS's object to spring request

  • Clone with SSH
  • Clone with HTTPS
  • Embed
  • Share
    The snippet can be accessed without any authentication.
    Authored by Tanawatra C.

    Convert Javascript's object to recoginizable to spring object mapping

    Edited
    snippet.md 1.78 KiB
    ```javascript var flatten = function(data, prefix) { var output = []; var nvl = (s) => (s ? s : ""); var pNvl = (s) => (s ? (s + ".") : ""); if (typeof data != 'object') { return [{ name: prefix, value: data }]; } else { for (var k in data) { switch (typeof data[k]) { case 'string': case 'number': output.push({ 'name': pNvl(prefix) + k, 'value': data[k] }); break; case 'object': if (data[k].length != void(0)) { // array for (var i in data[k]) { $.merge(output, flatten(data[k][i], pNvl(prefix) + k + '[' + i + ']')); } } else { // object $.merge(output, flatten(data[k], pNvl(prefix) + k)); } break; } } } return output; } ``` Test cases: ```javascript (()=>{ cases = [ { input: {a:1}, expected: 'a=1' }, { input: {a:[1]}, expected: 'a[0]=1' }, { input: {a:[1],b:0}, expected: 'a[0]=1&b=0' }, { input: {a:[1,2]}, expected: 'a[0]=1&a[1]=2' }, { input: {a:[1,2],b:{c:1}}, expected: 'a[0]=1&a[1]=2&b.c=1' }, { input: {a:[0],b:{c:{d:1}}}, expected: 'a[0]=0&b.c.d=1' }, { input: {a:[{n:1},{n:2}]}, expected: 'a[0].n=1&a[1].n=2' }, { input: {a:[{n:1},{n:[1,2]}]}, expected: 'a[0].n=1&a[1].n[0]=1&a[1].n[1]=2' }, { input: {a:[{n:1},{n:[1,2],m:[3,4],o:{a:1}}],b:{q:[1]}}, expected: 'a[0].n=1&a[1].n[0]=1&a[1].n[1]=2&a[1].m[0]=3&a[1].m[1]=4&a[1].o.a=1&b.q[0]=1' }, ]; for (var i in cases) { if ( ( actual = decodeURIComponent( $.param( flatten(cases[i].input) ) ) ) != cases[i].expected ) { throw "\nExpected: " + cases[i].expected + "\n" + "Actual: " + actual; } else { console.log("CASE:" + JSON.stringify(cases[i].input) + " [PASS]"); } } })(); ```
    0% Loading or .
    You are about to add 0 people to the discussion. Proceed with caution.
    Finish editing this message first!
    Please register or to comment