gdata.core
index
/usr/local/google/home/afshar/src/external-gdata-release/google3/src/gdata/core.py

#    Copyright (C) 2010 Google Inc.
#
#   Licensed under the Apache License, Version 2.0 (the "License");
#   you may not use this file except in compliance with the License.
#   You may obtain a copy of the License at
#
#       http://www.apache.org/licenses/LICENSE-2.0
#
#   Unless required by applicable law or agreed to in writing, software
#   distributed under the License is distributed on an "AS IS" BASIS,
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#   See the License for the specific language governing permissions and
#   limitations under the License.

 
Modules
       
simplejson

 
Classes
       
__builtin__.object
Jsonc

 
class Jsonc(__builtin__.object)
    Represents JSON-C data in an easy to access object format.
 
To access the members of a JSON structure which looks like this:
{
  "data": {
    "totalItems": 800,
    "items": [
      {
        "content": {
          "1": "rtsp://v5.cache3.c.youtube.com/CiILENy.../0/0/0/video.3gp"
        },
        "viewCount": 220101,
        "commentCount": 22,
        "favoriteCount": 201
      }
    ]
  },
  "apiVersion": "2.0"
}
 
You would do the following:
x = gdata.core.parse_json(the_above_string)
# Gives you 800
x.data.total_items
# Should be 22
x.data.items[0].comment_count
# The apiVersion is '2.0'
x.api_version
 
To create a Jsonc object which would produce the above JSON, you would do:
gdata.core.Jsonc(
    api_version='2.0',
    data=gdata.core.Jsonc(
        total_items=800,
        items=[
            gdata.core.Jsonc(
                view_count=220101,
                comment_count=22,
                favorite_count=201,
                content={
                    '1': ('rtsp://v5.cache3.c.youtube.com'
                          '/CiILENy.../0/0/0/video.3gp')})]))
or
x = gdata.core.Jsonc()
x.api_version = '2.0'
x.data = gdata.core.Jsonc()
x.data.total_items = 800
x.data.items = []
# etc.
 
How it works:
The JSON-C data is stored in an internal dictionary (._dict) and the
getattr, setattr, and delattr methods rewrite the name which you provide
to mirror the expected format in JSON-C. (For more details on name
conversion see _to_jsonc_name.) You may also access members using
getitem, setitem, delitem as you would for a dictionary. For example
x.data.total_items is equivalent to x['data']['totalItems']
(Not all dict methods are supported so if you need something other than
the item operations, then you will want to use the ._dict member).
 
You may need to use getitem or the _dict member to access certain
properties in cases where the JSON-C syntax does not map neatly to Python
objects. For example the YouTube Video feed has some JSON like this:
"content": {"1": "rtsp://v5.cache3.c.youtube.com..."...}
You cannot do x.content.1 in Python, so you would use the getitem as
follows:
x.content['1']
or you could use the _dict member as follows:
x.content._dict['1']
 
If you need to create a new object with such a mapping you could use.
 
x.content = gdata.core.Jsonc(_dict={'1': 'rtsp://cache3.c.youtube.com...'})
 
  Methods defined here:
__delattr__(self, name)
__delitem__(self, key)
__getattr__(self, name)
__getitem__(self, key)
# For container methods pass-through to the underlying dict.
__init__(self, _dict=None, **kwargs)
__setattr__(self, name, value)
__setitem__(self, key, value)

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Functions
       
jsonc_to_string(jsonc_obj)
Converts a Jsonc object into a string of JSON-C.
parse_json(json_string)
Converts a JSON-C string into a Jsonc object.
 
Args:
  json_string: str or unicode The JSON to be parsed.
 
Returns:
  A new Jsonc object.
parse_json_file(json_file)
prettify_jsonc(jsonc_obj, indentation=2)
Converts a Jsonc object to a pretified (intented) JSON string.

 
Data
        __author__ = 'j.s@google.com (Jeff Scudder)'

 
Author
        j.s@google.com (Jeff Scudder)