json-path-value
Version:
It is a library that makes easier working with Json and JsonPath. It provides 3 main functionalities: 1) Json to JsonPath 2) JsonPath to Json 3) Comparing 2 Json's
146 lines (123 loc) • 3.29 kB
Markdown
# JSON PATH VALUE
## Description
It is a library that makes easier working with Json and JsonPath. It provides 3 main functionalities:
1) Json to JsonPath
2) JsonPath to Json
3) Comparing 2 Json's
## Functionalities
### Constructor
```console
const library = new JsonPath();
```
### JsonPathPair
This is a class that represents a JsonPath format.
##### Constructor
```console
public constructor(private path: string, private value: any, private type: string, private diff: string);
```
The first param is the **path** where a **value**, second param, of a **type**, third param, is placed. The fourth param is only used in the "Compare 2 Json's" functionality.
Example:
```console
/*{
"a": "a",
"b" : {
"c" : 1
}
}*/
let JsonPathPairs: JsonPathPair[] = [];
JsonPathPairs.push(new JsonPathPair("a", "a", "string", ''));
JsonPathPairs.push(new JsonPathPair("b.c", 1, "number", ''));
```
| PATH | VALUE | TYPE |
|----------|:-------------:|------:|
| a | "a"| string |
| b.c | 1| number |
### Marshall
This method allows us to transform a Json object "obj" into a JsonPath.
```console
public marshall(obj: any, path: string, JsonPathPairs: JsonPathPair[]): JsonPathPair[]
```
In the first param you must insert your json's name. The second and the third one will always has the same initial value, "" and [] respectively.
Example:
```console
let json = {
"a": "a",
"b": {
"c": {
"d": "d",
"e": "e"
},
"f": "f"
}
}
const marshalled = library.marshall(json, "", []);
```
| PATH | VALUE | TYPE |
|----------|:-------------:|------:|
| a | "a"| string |
| b.c.d | "d" | string |
| b.c.e | "e" | string |
| b.f | "f" | string |
### UnMarshall
This method allows us to transform a JsonPath "JsonPathPairs" into a Json object.
```console
public unMarshall(JsonPathPairs: JsonPathPair[]): any
```
The first param must be the JsonPath in a JsonPathPair[] format.
Example:
const marshalled -->
| PATH | VALUE | TYPE |
|----------|:-------------:|------:|
| a | "a"| string |
| b.c.d | "d" | string |
| b.c.e | "e" | string |
| b.f | "f" | string |
```console
const unmarshalled = library.unMarshall(marshalled, "", []);
/*unmarshalled = {
"a": "a",
"b": {
"c": {
"d": "d",
"e": "e"
},
"f": "f"
}
}*/
```
### Compare 2 Json's
This method allows us to compare 2 Json's and the method will return a JsonPathPair[], one row for each difference between the 2 Json (Addition, Modification or Deletion) and the current value.
```console
public compareJsonPath(before: any, after: any): JsonPathPair[]
```
Example:
```console
let before = {
"a": "a",
"b": {
"c": {
"d": "d",
"e": "e"
},
"f": "f"
}
}
let after = {
"a": true,
"b": {
"c": {
"d": "d",
"g" : "g"
},
"f": 2
}
}
const compared = library.compareJsonPath(before, after);
```
const compared -->
| PATH | VALUE | TYPE | DIFF|
|----------|:-------------:|------:| ----:|
| a | true| boolean | Modified|
| b.c.e | "e" | string | Deleted|
| b.c.g | "g" | string | Added |
| b.f | 2 | number | Modified |