Tech C**P
14 subscribers
161 photos
9 videos
59 files
304 links
مدرس و برنامه نویس پایتون و لینوکس @alirezastack
Download Telegram
Use jq to process JSON in linux terminal. In order to parse JSON in linux you can use sed, awk and grep, but with jq it is far more easier.

https://stedolan.github.io/jq/

#jq #json #terminal #linux #sysadmin
In order to load json config file in Cement python framework, you simply need to include the json extension, and then set the CementApp.Meta.config_handler to json:
from cement.core.foundation import CementApp

class MyApp(CementApp):
class Meta:
label = 'myapp'
extensions = ['json']
config_handler = 'json'
config_extension = '.json'

This will keep the default config_files list intact, but use .json instead of .conf for the files it looks for.

#python #cement #json #config
If you use json.dumps() in order to write a json into a file, it will be wriiten all in one line. You can do more with dumps(). You can pretty print into the file with indentation using indent parameter:

dumped_json = json.dumps(json.loads(content), indent=4)


You can do more and sort json keys! To do that pass sort_keys to dumps function like below:

dumped_json = json.dumps(json.loads(content), indent=4, sort_keys=True)

#python #json #dumps #indent #sort #sort_keys
As an alternative to the pprint module:

# The standard string repr for dicts is hard to read:
>>> my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee}
>>> my_mapping
{'b': 42, 'c': 12648430. 'a': 23} # 😞


# The "json" module can do a much better job:
>>> import json
>>> print(json.dumps(my_mapping, indent=4, sort_keys=True))
{
"a": 23,
"b": 42,
"c": 12648430
}

# Note this only works with dicts containing
# primitive types (check out the "pprint" module):
>>> json.dumps({all: 'yup'})
TypeError: keys must be a string

#python #pprint #json #dumps
Did you know you can use jsonSchema in MongoDB to search for documents?

Let's say you have users collection with data below:

{ "_id" : ObjectId("5f64bd1eca8806f2c04fcbe3"), "customer_id" : 100, "username" : "john" }
{ "_id" : ObjectId("5f64bd1eca8806f2c04fcbe5"), "customer_id" : 206, "username" : "new_customer" }
{ "_id" : ObjectId("60420df441558d6671cf54f2"), "customer_id" : "123", "username" : "Ali" }


Now let's say you want to find all documents that has a customer_id of type string instead of int.
In Mongo shell:

let ms = {required: ["customer_id"], properties: {customer_id: {bsonType: "string"}}}


This schema says look for documents that have customer_id field with string type. To search:

> db.customers.find({$jsonSchema: ms})
{ "_id" : ObjectId("60420df441558d6671cf54f2"), "customer_id" : "123", "username" : "Ali" }


Interesting, right? :)

#database #mongodb #jsonSchema #json_schema