Skip to main content

JsonModel Guide

JSModel Package is a python package that helps to work with Json Data more efficiently

Installation

Use the package manager pip to install JsonModel.

pip install JSModel

Usage

from JSModel import ParseModel

data = {
    "A": "This is A",
    "B": "This is B",
    "C": "This is C",
}


### Create your Model ###
class ModelA:
    ThisA = "A"
    ThisB = "B"
    ThisC = "C"
    ThisD = "D"


parse_model = ParseModel(ModelA)
parse_model.data(data)
result = parse_model.parse(null_value=None,
                           error_if_null=False
                           )
print(result)
### output: {'ThisA': 'This is A', 'ThisB': 'This is B', 'ThisC': 'This is C', 'ThisD': 'None'}

## if error_if_null =True --> This will raise error if the key is not found
result = parse_model.parse(null_value=None,
                           error_if_null=True
                           )
### output: KeyError: 'D'

### null_value is to assigned a default value if the key is not found
result = parse_model.parse(
    null_value="This is Empty",
    error_if_null=False
    )
print(result)


### output: {'ThisA': 'This is A', 'ThisB': 'This is B', 'ThisC': 'This is C', 'ThisD': 'This is Empty'}

### It can also Accept a Json Array data as well as List within the model.
class A:
    valueA = ["Data", "Information", "Age"]


data = [
    {
        "Data": {
            "Information":
                {
                    "Age": "20"
                }
        },
    },
    {
        "Data": {
            "Information":
                {
                    "Age": "22"
                }
        },
    }
    instance = ParseModel(A)
instance.data(data)
return_data = instance.parse()
## return_data is a Iterator Type


## output:
{'valueA': '20'}
{'valueA': '22'}

Complex Model:

from JSModel import ParseModel
from Utilities import credential_data
from JSModel import SubModel


class delivery_type_model(SubModel):
    target_node = "ceterms:targetNode"
    target_node_name = "ceterms:targetNodeName"


class Courses:
    type = "@type"
    ctid = "ceterms:ctid"
    name = "ceterms:name"
    keyword = ["ceterms:keyword", "en-US"]
    ownedby = "ceterms:ownedBy"
    offeredBy = "ceterms:offeredBy"
    description = "ceterms:description"
    delivery_type = delivery_type_model(
        "ceterms:deliveryType"
        )
    dateEffective = "ceterms:dateEffective"
    subject_webpage = "ceterms:subjectWebpage"
    availableOnlineAt = "ceterms:availableOnlineAt"
    version = "ceterms:versionIdentifier"
    learning_method = "ceterms:learningMethodType"
    life_cycle_status = "ceterms:lifeCycleStatusType"


ctid = ["ce-55873e03-f228-4ed2-81ee-7179b7636c27",
        "ce-d981d38d-8087-4272-bf44-b6d8ac6abd68"]
instance = credential_data.ctids(ctid)

Courses_Model = ParseModel(Courses)
"""
The data is attracted from public data from https://credentialengine.org
Here are the full link
"https://credentialengineregistry.org/resources/ce-55873e03-f228-4ed2-81ee-7179b7636c27"

"https://credentialengineregistry.org/resources/ce-d981d38d-8087-4272-bf44-b6d8ac6abd68"


"""
{
   "@context":"https://credreg.net/ctdl/schema/context/json",
   "@id":"https://credentialengineregistry.org/resources/ce-55873e03-f228-4ed2-81ee-7179b7636c27",
   "@type":"ceterms:Course",
   "ceterms:ctid":"ce-55873e03-f228-4ed2-81ee-7179b7636c27",
   "ceterms:name":{
      "en-US":"Automotive Electrical Fundamentals and Applications"
   },
   "ceterms:keyword":{
      "en-US":[
         "Cohort 1",
         "Cohort 2"
      ]
   },
   "ceterms:ownedBy":[
      "https://credentialengineregistry.org/resources/ce-985b6759-2efc-4062-81a7-66a9dbdf394a"
   ],
   "ceterms:offeredBy":[
      "https://credentialengineregistry.org/resources/ce-985b6759-2efc-4062-81a7-66a9dbdf394a"
   ],
   "ceterms:inLanguage":[
      "en"
   ],
   "ceterms:description":{
      "en-US":"Automotive Electrical Fundamentals and Applications - UAUT 128"
   },
   "ceterms:deliveryType":[
      {
         "@type":"ceterms:CredentialAlignmentObject",
         "ceterms:framework":"https://credreg.net/ctdl/terms/Delivery",
         "ceterms:targetNode":"deliveryType:InPerson",
         "ceterms:frameworkName":{
            "en-US":"Delivery Type"
         },
         "ceterms:targetNodeName":{
            "en-US":"In-Person Only"
         },
         "ceterms:targetNodeDescription":{
            "en-US":"Delivery is only face-to-face."
         }
      }
   ],
   "ceterms:dateEffective":"2021-10-04",
   "ceterms:subjectWebpage":"https://go.pima.edu/automotive-technology",
   "ceterms:availableOnlineAt":[
      "https://go.pima.edu/automotive-technology"
   ],
   "ceterms:versionIdentifier":[
      {
         "@type":"ceterms:IdentifierValue",
         "ceterms:identifierValueCode":"UAUT 128"
      }
   ],
   "ceterms:learningMethodType":[
      {
         "@type":"ceterms:CredentialAlignmentObject",
         "ceterms:framework":"https://credreg.net/ctdl/terms/LearningMethod",
         "ceterms:targetNode":"learnMethod:Lecture",
         "ceterms:frameworkName":{
            "en-US":"Learning Method"
         },
         "ceterms:targetNodeName":{
            "en-US":"Lecture"
         },
         "ceterms:targetNodeDescription":{
            "en-US":"Primary method is presentation by an instructor of learning material and may include student discussion."
         }
      }
   ],
   "ceterms:lifeCycleStatusType":{
      "@type":"ceterms:CredentialAlignmentObject",
      "ceterms:framework":"https://credreg.net/ctdl/terms/LifeCycleStatus",
      "ceterms:targetNode":"lifeCycle:Active",
      "ceterms:frameworkName":{
         "en-US":"Life Cycle Status"
      },
      "ceterms:targetNodeName":{
         "en-US":"Active"
      },
      "ceterms:targetNodeDescription":{
         "en-US":"Resource is active, current, ongoing, offered, operational, or available."
      }
   }
}
for data in instance:
    Courses_Model.data(data)
    # result=Courses_Model.parse(error_if_null=False)
    # for i in result:
    #     print(i)
    for i in Courses_Model.parse():
        print(i)

Output:

{
   "availableOnlineAt":[
      "https://go.pima.edu/automotive-technology"
   ],
   "ctid":"ce-55873e03-f228-4ed2-81ee-7179b7636c27",
   "dateEffective":"2021-10-04",
   "delivery_type":[
      {
         "target_node":"deliveryType:InPerson",
         "target_node_name":{
            "en-US":"In-Person Only"
         }
      }
   ],
   "description":{
      "en-US":"Automotive Electrical Fundamentals and Applications - UAUT 128"
   },
   "keyword":[
      "Cohort 1",
      "Cohort 2"
   ],
   "learning_method":[
      {
         "@type":"ceterms:CredentialAlignmentObject",
         "ceterms:framework":"https://credreg.net/ctdl/terms/LearningMethod",
         "ceterms:targetNode":"learnMethod:Lecture",
         "ceterms:frameworkName":{
            "en-US":"Learning Method"
         },
         "ceterms:targetNodeName":{
            "en-US":"Lecture"
         },
         "ceterms:targetNodeDescription":{
            "en-US":"Primary method is presentation by an instructor of learning material and may include student discussion."
         }
      }
   ],
   "life_cycle_status":{
      "@type":"ceterms:CredentialAlignmentObject",
      "ceterms:framework":"https://credreg.net/ctdl/terms/LifeCycleStatus",
      "ceterms:targetNode":"lifeCycle:Active",
      "ceterms:frameworkName":{
         "en-US":"Life Cycle Status"
      },
      "ceterms:targetNodeName":{
         "en-US":"Active"
      },
      "ceterms:targetNodeDescription":{
         "en-US":"Resource is active, current, ongoing, offered, operational, or available."
      }
   },
   "name":{
      "en-US":"Automotive Electrical Fundamentals and Applications"
   },
   "offeredBy":[
      "https://credentialengineregistry.org/resources/ce-985b6759-2efc-4062-81a7-66a9dbdf394a"
   ],
   "ownedby":[
      "https://credentialengineregistry.org/resources/ce-985b6759-2efc-4062-81a7-66a9dbdf394a"
   ],
   "subject_webpage":"https://go.pima.edu/automotive-technology",
   "type":"ceterms:Course",
   "version":[
      {
         "@type":"ceterms:IdentifierValue",
         "ceterms:identifierValueCode":"UAUT 128"
      }
   ]
}
{
   "availableOnlineAt":"None",
   "ctid":"ce-d981d38d-8087-4272-bf44-b6d8ac6abd68",
   "dateEffective":"None",
   "delivery_type":"None",
   "description":{
      "en-US":"Study of current office procedures, duties, and responsibilities applicable to an office environment. The series includes instruction in word processing, spreadsheet, databases, presentation software, Internet searching, as well as data entry, practical business applications, business math and business communications"
   },
   "keyword":"None",
   "learning_method":"None",
   "life_cycle_status":{
      "@type":"ceterms:CredentialAlignmentObject",
      "ceterms:framework":"https://credreg.net/ctdl/terms/LifeCycleStatus",
      "ceterms:targetNode":"lifeCycle:Active",
      "ceterms:frameworkName":{
         "en-US":"Life Cycle Status"
      },
      "ceterms:targetNodeName":{
         "en-US":"Active"
      },
      "ceterms:targetNodeDescription":{
         "en-US":"Resource is active, current, ongoing, offered, operational, or available."
      }
   },
   "name":{
      "en-US":"Administrative Assistant Series"
   },
   "offeredBy":"None",
   "ownedby":[
      "https://credentialengineregistry.org/resources/ce-392226c8-d9ee-4680-9a52-a4f8707dbf5f"
   ],
   "subject_webpage":"https://sites.austincc.edu/admin-ce/poft-1070-administrative-assistant-series",
   "type":"ceterms:Course",
   "version":"None"
}

License

MIT

Metadata

Release files for JSModel 0.0.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for JSModel 0.0.5
File Size Uploaded
JSModel-0.0.5.tar.gz 6.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for JSModel 0.0.5
File Interpreter ABI Platform
JSModel-0.0.5-py3-none-any.whl Python 3 none any Details

Total release size: 13.8 kB

Release files / JSModel-0.0.5.tar.gz

Download URL JSModel-0.0.5.tar.gz
Size 6.7 kB
Tags Source
SHA-256 checksum
How to use checksums
4dc0ee823f7698daab7221f2bcf51004d1d085549732ced7e21af9ab552ebedb
BLAKE2b-256 checksum
How to use checksums
4b5f043c245d62d763c980681fdc482475a0fb9642379d9424c7af14deceed52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.7.5

Release files / JSModel-0.0.5-py3-none-any.whl

Download URL JSModel-0.0.5-py3-none-any.whl
Size 7.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
195d0d050c0c3374419d095118212eaf7d41a76b2e29ddc61023944d771741fb
BLAKE2b-256 checksum
How to use checksums
4fea3cd2919f7ad4da48a1121ad2270bfc7b6da21212318ae2dc923736c34c1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.7.5

Release history Release notifications | RSS feed

This release

0.0.5 This release

2 release files

0.0.4

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page