一次采集JSON解析错误的修复

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 两段采集来的JSON格式数据存在格式问题,直接使用PHP的`json_decode`会报错。解决思路包括:1) 手动格式化并逐行排查错误;2) 使用PHP-V8JS扩展在JavaScript环境中解析。具体方案一是通过正则表达式和字符串替换修复格式,方案二是利用V8Js引擎执行JS代码并返回JSON字符串,最终实现正确解析。简介:两段采集的JSON数据因掺杂JavaScript代码导致PHP解析失败。解决方案包括手动格式化修复和使用PHP-V8JS扩展在JavaScript环境中解析,确保JSON数据能被正确处理。

两段采集来的JSON格式:
一:

{
   "hwgOnlineId":"554312", "jiwuChatId":"", "phoneCategoryId":"20006", "cuxiaoSeq":{
   voucherTitle:1,lh

二:

{
   "pic":"//imgservice.suning.cn/uimg1/b2c/image/rX4cM65dyr_4kndNFwLEgA.jpg_400w_400h_4e",
     "itemDomain":"//"+document.location.hostname,
     "resRoot":"//script.suning.cn/project/pdsWeb",
     "shopCount":1,
     "sslStoreCode":"",
     "addCartNumLimit":"199",
     "favoriteStatusSwitch":"1" == "1",
     "thirdEVoucherFlag":"",
     "specialSSLFlag":"",
     "sslLabelText" : "苏宁服务"}

直接使用PHP的json_decode报错

解决思路:
1、手动格式化,将所有","换行
2、半分法删除内容定位报错的代码行
3、找到问题行后过滤格式处理
4、对于json格式中掺杂了javascript代码的情况还可以直接使用v8js引擎处理

解决方案一(修复格式):

$str = file_get_contents('test.txt');

$str = preg_replace('@/\*[^/]+\*/@isU','',$str);

$str = str_replace('"+document.location.hostname','"',$str);

$str = str_replace('"1" == "1"','true',$str);

$json = json_decode($str);

if(!$json) $json = json2array($str);

var_dump(getJsJSON($json));

解决方案二(使用PHP-V8JS扩展):

//以JavaScript环境执行JS
function getJsJSON($str){
   
    $v8 = new V8Js();
    $func = "
        function getJsJSON(str){
   
         document ={
   location:{
   hostname:''}}
         a={
   $str}
         return JSON.stringify(a);
        }
        b = getJsJSON()
   ";

   try {
   
        //传递参数给js
        // $v8->str = $str;
        //执行js
        $code = $v8->executeString($func);
        //清空对象,垃圾回收。
        unset($v8);
    } catch (V8JsScriptException $e) {
           
         dump($e->getMessage());
         dump($e->getJsSourceLine());
         dump($e->getJsTrace());
         // dump($e);
      }
    if($code)$code=json_decode($code,true);  
    return $code;
}


$js = file_get_contents('test.txt');
var_dump(getJsJSON($js));
o0b.cn/ibrad
相关文章
|
3月前
|
SQL 存储 JSON
SQL,解析 json
SQL,解析 json
84 8
|
3月前
|
域名解析 网络协议
邮箱域名解析后收不到短信?三步修复教程
邮箱域名解析后收不到短信?三步修复教程
|
5月前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
4月前
|
JSON API 数据格式
requests库中json参数与data参数使用方法的深入解析
选择 `data`或 `json`取决于你的具体需求,以及服务器端期望接收的数据格式。
308 2
|
4月前
|
JSON 前端开发 JavaScript
解析JSON文件
解析JSON文件
157 9
|
3月前
|
JSON JavaScript API
商品详情数据接口解析返回的JSON数据(API接口整套流程)
商品详情数据接口解析返回的JSON数据是API接口使用中的一个重要环节,它涉及从发送请求到接收并处理响应的整个流程。以下是一个完整的API接口使用流程,包括如何解析返回的JSON数据:
|
4月前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
219 0
|
5月前
|
JSON API 数据格式
基于服务器响应的实时天气数据进行JSON解析的详细代码及其框架
【8月更文挑战第25天】这段资料介绍了一个使用Python从服务器获取实时天气数据并解析JSON格式数据的基本框架。主要分为三个部分:一是安装必要的`requests`库以发起HTTP请求获取数据,同时利用Python内置的`json`库处理JSON数据;二是提供了具体的代码实现,包括获取天气数据的`get_weather_data`函数和解析数据的`parse_weather_data`函数;三是对代码逻辑进行了详细说明,包括如何通过API获取数据以及如何解析这些数据来获取温度和天气描述等信息。用户需要根据实际使用的天气API调整代码中的API地址、参数和字段名称。
|
3月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
2月前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释

推荐镜像

更多