Javascript JSON

From Yate Documentation
(Difference between revisions)
Jump to: navigation, search
(Methods)
 
(8 intermediate revisions by one user not shown)
Line 14: Line 14:
 
* '''stringify(obj,unused,spaces)'''
 
* '''stringify(obj,unused,spaces)'''
 
Stringify a Javascript primitive or object.<br/>
 
Stringify a Javascript primitive or object.<br/>
 
+
Objects already added (repeated in input object tree) will be replaced by an object with a '''$ref''' property having a string value as specified in RFC 6901 URI fragment.<br>
 
Parameters:<br/>
 
Parameters:<br/>
 
'''obj''' Object of primitive type<br/>
 
'''obj''' Object of primitive type<br/>
Line 21: Line 21:
 
Return:<br/>
 
Return:<br/>
 
String JSON data, ''undefined'' is an error occured.
 
String JSON data, ''undefined'' is an error occured.
 +
 +
References:
 +
  var a = {id:"a"};
 +
  var b = {id:"b"};
 +
  var c = {id:"c", b:b, root:a};
 +
  a.b = b;
 +
  a.c = c;
 +
JSON.stringify(a,undefined,2):
 +
{                                                                                                                                                                                                                 
 +
  "id": "a",                                                                                                                                                                                                     
 +
  "b": {                                                                                                                                                                                                         
 +
    "id": "b"                                                                                                                                                                                                     
 +
  },
 +
  "c": {
 +
    "id": "c",
 +
    "b": {
 +
      "$ref": "#/b"
 +
    },
 +
    "root": {
 +
      "$ref": "#"
 +
    }
 +
  }
 +
}
  
  
Line 29: Line 52:
 
'''name''' Name of the file containing JSON data<br/>
 
'''name''' Name of the file containing JSON data<br/>
 
Return:<br/>
 
Return:<br/>
Primitive type or object representing the data, ''undefined'' if parsing failed.
+
Primitive type or object representing the data, ''undefined'' if parsing failed or file error (file read failure, file length exceeds 65536 bytes).
  
  
Line 41: Line 64:
 
Return:<br/>
 
Return:<br/>
 
TRUE if operation succeeded, FALSE if an error occured.
 
TRUE if operation succeeded, FALSE if an error occured.
 +
 +
 +
* '''replaceParams(obj, params [,sqlEscape [,extraEsc]])
 +
 +
Replace ${paramname} instances in 'buf' from 'params' field values.<br>
 +
Replacements are done in string property values.<br>
 +
Parameters:<br>
 +
'''buf''': Array: replace in its elements. Object: replace in its properties. Any other type is ignored<br>
 +
'''params''': Object whose fields are used to replace. Ignored (no replace is made) if not an object<br>
 +
'''sqlEscape''': Optional. True to apply SQL escaping to parameter values<br>
 +
'''extraEsc''': Character to escape other than the SQL default ones<br>
 +
 +
 +
* '''findPath(obj, path)'''
 +
Find object property value or array at index value by a JSON path.<br>
 +
Parameters:<br>
 +
'''obj''': Object to search in<br>
 +
'''path''': Path to use. May be a [[Javascript JPath|JPath]] object or a string<br>
 +
Return:<br>
 +
Found value, '''undefined''' if not found, '''obj''' is not an object or path is invalid
 +
 +
 +
* '''replaceReferences(obj)'''
 +
Replace path references in given object properties or array values.<br>
 +
A path reference is an object with a '''$ref''' property with value containing a path URI as specified in RFC 6901.<br>
 +
Parameters:<br>
 +
'''obj''': Object to replace in<br>
 +
Return:<br>
 +
True on success, false otherwise
 +
 +
Input:
 +
{
 +
  "id": "a",
 +
  "array": [
 +
    {
 +
      "id": "b"
 +
    },
 +
    {
 +
      "id": "c",
 +
      "b": {
 +
        "$ref": "#/array/0"
 +
      },
 +
      "root": {
 +
        "$ref": "#"
 +
      }
 +
    }
 +
  ],
 +
  "b": {
 +
    "$ref": "#/array/0"
 +
  },
 +
  "c": {
 +
    "$ref": "#/array/1"
 +
  }
 +
}
 +
Engine.print_var_r() after replace
 +
's' = [object Object]
 +
  'id' = 'a'
 +
  'array' = [object Array]
 +
    '0' = [object Object]
 +
      'id' = 'b'
 +
    '1' = [object Object]
 +
      'id' = 'c'
 +
      'b' = [object Object] (already seen) #/array/0
 +
      'root' = [object Object] (already seen) #
 +
  'b' = [object Object] (already seen) #/array/0
 +
  'c' = [object Object] (already seen) #/array/1
 +
 +
Input:
 +
{
 +
  "id": "a",
 +
  "b": {
 +
    "id": "b"
 +
  },
 +
  "c": {
 +
    "id": "c",
 +
    "b": {
 +
      "$ref": "#/b"
 +
    },
 +
    "root": {
 +
      "$ref": "#"
 +
    }
 +
  },
 +
  "array": [
 +
    {
 +
      "$ref": "#/b"
 +
    },
 +
    {
 +
      "$ref": "#/c"
 +
    }
 +
  ]
 +
}
 +
Engine.print_var_r() after replace
 +
's' = [object Object]
 +
  'id' = 'a'
 +
  'b' = [object Object]
 +
    'id' = 'b'
 +
  'c' = [object Object]
 +
    'id' = 'c'
 +
    'b' = [object Object] (already seen) #/b
 +
    'root' = [object Object] (already seen) #
 +
  'array' = [object Array]
 +
    '0' = [object Object] (already seen) #/b
 +
    '1' = [object Object] (already seen) #/c
 +
 +
 +
[[Category:Javascript]]

Latest revision as of 12:52, 9 September 2024

JSON parsing global object.

[edit] Methods

  • parse(str)

Parse JSON string.

Parameters:
str String containing JSON data
Return:
Primitive type or object representing the data, undefined if parsing failed.


  • stringify(obj,unused,spaces)

Stringify a Javascript primitive or object.
Objects already added (repeated in input object tree) will be replaced by an object with a $ref property having a string value as specified in RFC 6901 URI fragment.
Parameters:
obj Object of primitive type
unused Unused optional parameter, for compatibility with the standard
spaces Optional number of spaces to use for indentation
Return:
String JSON data, undefined is an error occured.

References:

  var a = {id:"a"};
  var b = {id:"b"};
  var c = {id:"c", b:b, root:a};
  a.b = b;
  a.c = c;

JSON.stringify(a,undefined,2):

{                                                                                                                                                                                                                  
  "id": "a",                                                                                                                                                                                                       
  "b": {                                                                                                                                                                                                           
    "id": "b"                                                                                                                                                                                                      
  },
  "c": {
    "id": "c",
    "b": {
      "$ref": "#/b"
    },
    "root": {
      "$ref": "#"
    }
  }
}


  • loadFile(name)

Parse JSON file (non-standard method).

Parameters:
name Name of the file containing JSON data
Return:
Primitive type or object representing the data, undefined if parsing failed or file error (file read failure, file length exceeds 65536 bytes).


  • saveFile(name,obj,spaces)

Save JSON data in a file (non-standard method).

Parameters:
name Name of the JSON file to write
unused Unused optional parameter, for compatibility with the standard
spaces Optional number of spaces to use for indentation
Return:
TRUE if operation succeeded, FALSE if an error occured.


  • replaceParams(obj, params [,sqlEscape [,extraEsc]])

Replace ${paramname} instances in 'buf' from 'params' field values.
Replacements are done in string property values.
Parameters:
buf: Array: replace in its elements. Object: replace in its properties. Any other type is ignored
params: Object whose fields are used to replace. Ignored (no replace is made) if not an object
sqlEscape: Optional. True to apply SQL escaping to parameter values
extraEsc: Character to escape other than the SQL default ones


  • findPath(obj, path)

Find object property value or array at index value by a JSON path.
Parameters:
obj: Object to search in
path: Path to use. May be a JPath object or a string
Return:
Found value, undefined if not found, obj is not an object or path is invalid


  • replaceReferences(obj)

Replace path references in given object properties or array values.
A path reference is an object with a $ref property with value containing a path URI as specified in RFC 6901.
Parameters:
obj: Object to replace in
Return:
True on success, false otherwise

Input:

{
  "id": "a",
  "array": [
    {
      "id": "b"
    },
    {
      "id": "c",
      "b": {
        "$ref": "#/array/0"
      },
      "root": {
        "$ref": "#"
      }
    }
  ],
  "b": {
    "$ref": "#/array/0"
  },
  "c": {
    "$ref": "#/array/1"
  }
}

Engine.print_var_r() after replace

's' = [object Object]
  'id' = 'a'
  'array' = [object Array]
    '0' = [object Object]
      'id' = 'b'
    '1' = [object Object]
      'id' = 'c'
      'b' = [object Object] (already seen) #/array/0
      'root' = [object Object] (already seen) #
  'b' = [object Object] (already seen) #/array/0
  'c' = [object Object] (already seen) #/array/1

Input:

{
  "id": "a",
  "b": {
    "id": "b"
  },
  "c": {
    "id": "c",
    "b": {
      "$ref": "#/b"
    },
    "root": {
      "$ref": "#"
    }
  },
  "array": [
    {
      "$ref": "#/b"
    },
    {
      "$ref": "#/c"
    }
  ]
}

Engine.print_var_r() after replace

's' = [object Object]
  'id' = 'a'
  'b' = [object Object]
    'id' = 'b'
  'c' = [object Object]
    'id' = 'c'
    'b' = [object Object] (already seen) #/b
    'root' = [object Object] (already seen) #
  'array' = [object Array]
    '0' = [object Object] (already seen) #/b
    '1' = [object Object] (already seen) #/c
Personal tools
Namespaces

Variants
Actions
Preface
Configuration
Administrators
Developers