DEV Community

LunaStev
LunaStev

Posted on

WSON (Web Simple Object Notation)

WSON is a new data serialization format designed to address the shortcomings of JSON and YAML.

GitHub

Syntax Definition

1. Basic Structure

  • The contents of a WSON file are enclosed in curly baces {}, which represent an object.
  • An object consists of key-value pairs.
  • Keys and values are separated by either a colon (:) or an equals sign (=).

2. Comments

  • Comments begin with // or # and are written on a single line.
  • Comments apply until the end of the line.
  • Multi-line comments are not supported; for comments spanning multiple lines, add // or # at the start of each line.

3. Object

  • An object is enclosed in curly barces {} and contains key-value pairs.
  • You can use either : or = between keys and values, and both symbols can be mixed within the same object
  • Each attribute is separated by a comma ,.
  • Objects can be nested within other objects.

Example:

{ status: "success", code = 200, user = { id: 123, name: "John Doe" } } 
Enter fullscreen mode Exit fullscreen mode

4. Array

  • Arrays are enclosed in square brackets [], and elements are separated by commas ,.
  • Array elements can include objects, strings, numbers, and other data types.
  • In WSON, arrays can be nested within objects, and arrays can contain other arrays or objects.

Example:

tasks: [ { task_id: 1, title: "Complete project report" }, { task_id: 2, title: "Review team feedback" } ] 
Enter fullscreen mode Exit fullscreen mode

5. Key-Value Pair

  • Attribute names are strings and are followed by either : or =, with the value placed immediately after.
  • Value types include strings, numbers, booleans, objects, and arrays.
  • Strings are enclosed in double quotes ".
  • Numbers are used without quotes and can be integers or floating-point values.

Example:

name: "John Doe" age = 25 
Enter fullscreen mode Exit fullscreen mode

6. Data Types

  • String: Text enclosed in double quotes ".
"hello world" 
Enter fullscreen mode Exit fullscreen mode
  • Number: An integer or floating-point value.
42 3.14 
Enter fullscreen mode Exit fullscreen mode
  • Boolean: Uses true or false valuse.
is_active = true 
Enter fullscreen mode Exit fullscreen mode
  • Object: Key-value pairs enclosed in curly braces {}.
  • Array: A list of elements enclosed in square brackets [].

7. Example Explanation

{ // Status code and message information status: "success", code: 200, message: "Data retrieved successfully", user = { id = 123, name: "John Doe", email: "john@example.com", age: 25 # User age }, tasks: [ { task_id: 1, title: "Complete project report", status: "in-progress", due_date: "2024-10-15" }, { task_id: 2, title: "Review team feedback", status: "pending", due_date: "2024-10-20" } ] } 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)