I am assuming you know how to do python programming so I am only giving you a partial solution here.
Your json file is a list of dictionaries. You can make a file reader or cut and paste it to the script editor. Each dictionary has all the keys for each frame. Those keyframes are key value pairs of attribute names to attribute values. For example "eyeBlink_R":0.630653619766235 indicates that blendShape attribute eyeBlink_R gets a value of 0.630653619766235 for that particular frame.
Below is sample code for 1 frame. You will have to write the loop to do this for each dictionary within your file.
import maya.cmds as cmds
frameData = {"eyeBlink_R":0.630653619766235,
"eyeWide_R":0,
"mouthLowerDown_L":0.0394449755549431,
"eyeLookDown_R":0.607172310352325,
"cheekSquint_L":0.0926333069801331,
"mouthDimple_R":0.0589954480528831,
"browInnerUp":0.215703368186951,
"eyeLookIn_L":0.000609547714702785,
"mouthPress_L":0.173792526125908,
"mouthStretch_R":0.130874514579773,
"browDown_L":0.0118590397760272,
"mouthFunnel":0.194534316658974,
"noseSneer_L":0.143848955631256,
"eyeLookOut_L":0.0232447534799576,
"eyeLookIn_R":0.133933961391449,
"mouthLowerDown_R":0.0413378998637199,
"browOuterUp_R":0.0843672901391983,
"mouthLeft":0.00630532624199986,
"cheekSquint_R":0.109647072851658,
"jawOpen":0.0494513735175133,
"eyeBlink_L":0.631030023097992,
"jawForward":0.00845738872885704,
"mouthPress_R":0.177991852164268,
"noseSneer_R":0.139457553625107,
"jawRight":0.00111576204653829,
"mouthShrugLower":0.110312908887863,
"eyeSquint_L":0.0642843469977379,
"eyeLookOut_R":7.60569946578471E-07,
"mouthFrown_L":0.146945968270302,
"cheekPuff":0.120135366916656,
"mouthStretch_L":0.160444423556328,
"mouthRollLower":0.0447048954665661,
"mouthUpperUp_R":0.085766077041626,
"mouthShrugUpper":0.129708498716354,
"eyeSquint_R":0.0651631653308868,
"mouthSmile_L":0.00668685464188457,
"eyeLookDown_L":0.609023749828339,
"eyeWide_L":0,
"mouthClose":0.0124557800590992,
"jawLeft":0.012608109973371,
"mouthDimple_L":0.0744616985321045,
"mouthFrown_R":0.145918473601341,
"mouthPucker":0.235637620091438,
"mouthRight":0.00372009864076972,
"browDown_R":0.0118923466652632,
"eyeLookUp_L":0,
"mouthSmile_R":0.00394255900755525,
"mouthUpperUp_L":0.0847973972558975,
"browOuterUp_L":0.0903196856379509,
"mouthRollUpper":0.0304965153336525,
"eyeLookUp_R":0,
"translation":[0.0122108394280076,-0.242821648716927,0.37145984172821],
"rotation":[-0.431879132986069,-0.017200656235218,-0.00822594482451677,-0.901729941368103]}
transformNode = "Sloth_Head2"
blendShapeNode = "blendShape2"
for attr in frameData.keys() :
if ( attr == "translation" ) :
# Set xform data on head
cmds.setKeyframe(transformNode, v=frameData[attr][0], at="translateX ")
cmds.setKeyframe(transformNode, v=frameData[attr][1], at="translateY ")
cmds.setKeyframe(transformNode, v=frameData[attr][2], at="translateZ ")
elif( attr == "rotation" ) :
# NOTE - you may need to convert the rotation values from radians to degrees
cmds.setKeyframe(transformNode, v=frameData[attr][0], at="rotateX")
cmds.setKeyframe(transformNode, v=frameData[attr][1], at="rotateY")
cmds.setKeyframe(transformNode, v=frameData[attr][2], at="rotateZ")
else :
# Set keyframe data on blendShapeNode
print attr
print frameData[attr]
cmds.setKeyframe( blendShapeNode , v=frameData[attr], at=attr)