---
# System prepended metadata

title: Storing parameters to JSON by python
tags: [Classical Computing]

---

###### tags: `Classical Computing`

# Storing parameters to JSON by python

## About JSON 
JSON (JavaScript Object Notation) is a format file to store data (as list or dict, etc).

## How to output
We can store parameters to JSON files which will be made in the same directory of the python files.

### Output dicts
```python=
import json

l = {3:4,6:7}

with open('1_test.json', 'w') as f:
    json.dump(l, f, ensure_ascii=False)
```

Result
```
# 1_test.json
{3:4, 6:7}
```

Attention: 
When defining as follwing, EOF errors occur.
```python=
l = {3,7}
```

### Output lists
```python=
import json

l = [[1,2],3]

with open('2_test.json', 'w') as f:
    json.dump(l, f, ensure_ascii=False)
```

Result
```
# 1_test.json
{0:{0:1,0:2}, 1:3}
```

### Output inputs and returns of functions
We can also get inputs and returns of functions and store them to JSON files.

```python=
def Sum(a,b):
    return a+b

for a in (0,1,2):
    for b in (3,4):
        json_file = '3_test_{}{}.json'.format(a,b)
        ans = Sum(a,b)
        mem = {"params":{1:a,2:b},"ans":ans}
        with open(json_file, 'w') as f:
            json.dump(mem, f, ensure_ascii=False, indent=4)
```


## How to output using pickle
The following is not nessesarry for reading about JSON outputs. It's just a memorandom for pickle.
Pickle is a binary file for storing lists and sets but is not readable. To read pickle files, we make JSON files which corresponds to it.

### Output lists and sets
```python=
import pickle
import json

l = [[1,2],3]


with open('4_pic.bin', 'wb') as p:
    pickle.dump(l, p)
    
with open('4_pic.bin', 'rb') as p:
    l = pickle.load(p)

with open('4_test_auto.json', 'w') as f:
    json.dump(l, f, ensure_ascii=False, indent=4)
```
The above is for outputing lists but we can do it as the same for sets.

### Output parameters and returns of functions
```python=
import pickle
import json

def Sum(a,b):
    return a+b

for a in (0,1,2):
    for b in (3,4):
        pickle_file = "func_pic_{}{}.bin".format(a,b)
        json_file = 'test_{}{}.json'.format(a,b)
        ans = Sum(a,b)
        mem = {"params":{1:a,2:b},"ans":ans}
        with open(pickle_file, 'wb') as p:
            pickle.dump(mem, p)
        with open(pickle_file, 'rb') as p:
            t = pickle.load(p)
            print(t)
        with open(json_file, 'w') as f:
            json.dump(t, f, ensure_ascii=False, indent=4)
```
