2016-12-02 26 views
1

に有効なJSONオブジェクトに無効なJSONオブジェクトを変換する - サーバーは、JSONの配列を送信オブジェクトとしてStringと私は有効なJSON配列に文字列を変換したい。私はこれが私の問題がある <p></p> ...すでに質問をしているが、私は以前に尋ねた任意の質問から答えを得ることはありません知っているJavaScriptの

例:サーバーは、私は純粋なJavaScriptを使用して二つのオブジェクトの有効な配列に変換したいこの

'{ 
    "ts": "3170075", 
    "eventid": 25, 
    "oper_minutes": 48577, 
    "time": "2016-12-02T06:36:36Z", 
    "lto": "7200000", 
    "package_name": "XXX", 
    "timestamp": "1480660593188", 
    "action_type": "1", 
    "events": [{ 
     "device_name": 0, 
     "key_category": 1, 
     "eventid": 15, 
     "ts": "2111" 
    }, { 
     "power_state": 3, 
     "reason": 1, 
     "eventid": 1, 
     "ts": "2113" 
    }] 
}, { 
    "ts": "3170084", 
    "eventid": 25, 
    "oper_minutes": 48577, 
    "time": "2016-12-02T06:36:36Z", 
    "lto": "7200000", 
    "package_name": "XXXX", 
    "timestamp": "1480660593218", 
    "action_type": "1", 
    "events": [{ 
     "device_name": 0, 
     "key_category": 1, 
     "eventid": 15, 
     "ts": "2111" 
    }, { 
     "power_state": 3, 
     "reason": 1, 
     "eventid": 1, 
     "ts": "2113" 
    }] 
}' 

のように送信します。

例:

[{ 
    "ts": "3170075", 
    "eventid": 25, 
    "oper_minutes": 48577, 
    "time": "2016-12-02T06:36:36Z", 
    "lto": "7200000", 
    "package_name": "XXX", 
    "timestamp": "1480660593188", 
    "action_type": "1", 
    "events": [{ 
     "device_name": 0, 
     "key_category": 1, 
     "eventid": 15, 
     "ts": "2111" 
    }, { 
     "power_state": 3, 
     "reason": 1, 
     "eventid": 1, 
     "ts": "2113" 
    }] 
}, { 
    "ts": "3170084", 
    "eventid": 25, 
    "oper_minutes": 48577, 
    "time": "2016-12-02T06:36:36Z", 
    "lto": "7200000", 
    "package_name": "XXX", 
    "timestamp": "1480660593218", 
    "action_type": "1", 
    "events": [{ 
     "device_name": 0, 
     "key_category": 1, 
     "eventid": 15, 
     "ts": "2111" 
    }, { 
     "power_state": 3, 
     "reason": 1, 
     "eventid": 1, 
     "ts": "2113" 
    }] 
}] 

私はすでにJSON.parse、JSON.stringifyを試してみました、など

期待通りには有効な結果..

注:オブジェクトのこの配列は、いずれであってもよいですサーバは時には1000個のオブジェクトを送信し、時には10個だけを文字列として送信します。処理に時間がかかりすぎる必要はありません。

私はこの問題をほぼ一日中解決しています。私はnodeJSでこれを使用していますので、純粋なjavaScriptまたはNPMライブラリのみを使用してください。

答えて

1

送信するJSON文字列が[]内にカプセル化される必要があるため、無効です。

あなたが行うことができ

:あなたのポストに掲載され、元の文字列(改行ための)無効なため、手動でやろうとします

var str = '{"ts": "3170075","eventid": 25,"oper_minutes": 48577,"time": "2016-12-02T06:36:36Z","lto": "7200000","package_name": "XXX","timestamp": "1480660593188","action_type": "1","events": [{"device_name": 0,"key_category": 1,"eventid": 15,"ts": "2111" }, {"power_state": 3,"reason": 1,"eventid": 1,"ts": "2113" }]}, {"ts": "3170084","eventid": 25,"oper_minutes": 48577,"time": "2016-12-02T06:36:36Z","lto": "7200000","package_name": "XXXX","timestamp": "1480660593218","action_type": "1","events": [{"device_name": 0,"key_category": 1,"eventid": 15,"ts": "2111" }, {"power_state": 3,"reason": 1,"eventid": 1,"ts": "2113"}]}'; 

    var obj = JSON.parse(`[${str}]`); 

エラーがあります。

関連する問題