Javascript 如何从JSON字符串中读取特定的字符串对象

Javascript 如何从JSON字符串中读取特定的字符串对象,javascript,angularjs,json,Javascript,Angularjs,Json,如何从这个JSON字符串中获取特定值。我想获取嵌套的JSON对象“FromUserId”:“bd079f57”,并将其传递给Javascript函数 "notification":{ "title" :"Test", "message" : "Message", "android": { "data": { "priority": "2",

如何从这个JSON字符串中获取特定值。我想获取嵌套的JSON对象
“FromUserId”:“bd079f57”
,并将其传递给Javascript函数

"notification":{
       "title" :"Test",
       "message" : "Message",  
           "android": {
                 "data": {
                         "priority": "2",
                        "profile": "profile",
                        "message": "xxx has sent you a Message.",
                        "style": "inbox",
                        "noteId": "1",
                        "visibility": "1",
                        "title": "Test",
                        "badge": "12",                  
                        "FromUserId": "bd079f57"                            
                        }
                    }
                 }



 "onNotification": function (notification) {         
                        var obj = JSON.parse(notification.message.android.data.FromUserId);  
                      // How to pass this test.FromUserId to ReadData function.                     
                      ReadData(obj)
                    }
$scope.ReadData(obj){
 //further process of json
}

JSON.stringify
将JavaScript数据结构转换为字符串

test.FromUserId
属性读取对象的
FromUserId
属性

不清楚函数的输入是什么,但您需要:

  • (如果您正在传递一个对象):完全忘记JSON。删除所有与JSON相关的函数。或
  • (如果您正在传递一个JSON字符串):仅使用
    JSON.parse
    ,并仅在
    通知中使用它
  • 然后需要通过数据结构的每一层进行访问。不能忽略顶层和数据之间的所有对象

    i、 e.您需要
    notification.message.android.data.FromUserId
    而不是
    test.FromUserId


    (在案例2中,将
    通知
    替换为
    测试
    ,但您仍然需要显式访问
    message.android.data
    层)。

    您可以执行以下操作:

    "onNotification": function (notification) {         
                            var test = JSON.parse(notification);
                            var obj= test.notification.message.android.data.FromUserId;  
                          // How to pass this test.FromUserId to ReadData function.                     
                          ReadData(obj)
                        }
    $scope.ReadData(obj){
     //further process of json
    }
    

    var obj=JSON.parse(测试);ReadData(test.notification.android.data.FromUserId);虽然我不是100%确定你的json是有效的,但我假设它并不是像上面那样设置的。你得到字符串了吗?如果是,则将其解析为
    JSON.prase(\u your\u JSON)
    ,然后解析为
    notification.android.data.FromUserId
    ?JSON.parse(notification.FromUserId)应该是JSON.parse(notification)我不明白为什么人们会对这个问题投反对票?
    test。FromUserId
    将是
    未定义的
    ,因为
    test
    是一个字符串。@George-
    test
    如果按照这个答案中的说明操作,就不会是字符串。请说明原因