【问题标题】:URN references to JSON converterURN 对 JSON 转换器的引用
【发布时间】:2022-10-12 23:14:23
【问题描述】:

我想将 URL 引用转换为 JSON,反之亦然

(include:(and:List((or:(urn:li:adTargetingFacet:locations:List(urn:li:geo:102221843))
),(or:(urn:li:adTargetingFacet:skills:List(urn:li:skill:17))))))

有没有可用的js工具?

很难构建和解码输出。

参考资料:https://learn.microsoft.com/en-us/linkedin/shared/references/v2/ads/targeting-criteria?context=linkedin%2Fmarketing%2Fcontext

【问题讨论】:

  • 看起来它是rest.li 的一部分。不幸的是,我找不到任何有用的库。我最终将此语法嵌入到我自己的代码中,用于将对象转换为查询字符串。

标签: javascript json linkedin-api urn


【解决方案1】:

这是一个确实可以优化的正则表达式替换链,它可以做到这一点。

给定一个遵循这种类型的定位对象:

type LinkedinTargetingCriteria = {
  include: {
    and: [
      {
        or: {
          "urn:li:adTargetingFacet:degrees": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:employers": string[];
          "urn:li:adTargetingFacet:staffCountRanges": string[];
          "urn:li:adTargetingFacet:industries": string[];
          "urn:li:adTargetingFacet:growthRate": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:titles": string[];
          "urn:li:adTargetingFacet:seniorities": string[];
          "urn:li:adTargetingFacet:jobFunctions": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:fieldsOfStudy": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:locations": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:schools": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:skills": string[];
        };
      },
      {
        or: {
          "urn:li:adTargetingFacet:yearsOfExperienceRanges": string[];
        };
      }
    ];
  };
};

此函数将其作为输入并将其转换为格式化的目标字符串

export const linkedinTargetingToString = (
  targeting: LinkedinTargetingCriteria
): string =>
  JSON.stringify(targeting)
    .replace(/:/g, "%3A")
    .replace(/%3A{/g, ":(")
    .replace(/{/g, "(")
    .replace(/}/g, ")")
    .replace(/%3A[/g, ":List(")
    .replace(/[/g, "List(")
    .replace(/]/g, ")")
    .replace(/"/g, "");

这个json

{"include":{"and":[{"or":{"urn:li:adTargetingFacet:degrees":[]}},{"or":{"urn:li:adTargetingFacet:employers":[],"urn:li:adTargetingFacet:staffCountRanges":[],"urn:li:adTargetingFacet:industries":[],"urn:li:adTargetingFacet:growthRate":[]}},{"or":{"urn:li:adTargetingFacet:titles":[],"urn:li:adTargetingFacet:seniorities":[],"urn:li:adTargetingFacet:jobFunctions":[]}},{"or":{"urn:li:adTargetingFacet:fieldsOfStudy":[]}},{"or":{"urn:li:adTargetingFacet:locations":["urn:li:geo:103350119"]}},{"or":{"urn:li:adTargetingFacet:schools":[]}},{"or":{"urn:li:adTargetingFacet:skills":[]}},{"or":{"urn:li:adTargetingFacet:yearsOfExperienceRanges":[]}}]}}

输出到

(include:(and:List((or:(urn%3Ali%3AadTargetingFacet%3Adegrees:List())),(or:(urn%3Ali%3AadTargetingFacet%3Aemployers:List(),urn%3Ali%3AadTargetingFacet%3AstaffCountRanges:List(),urn%3Ali%3AadTargetingFacet%3Aindustries:List(),urn%3Ali%3AadTargetingFacet%3AgrowthRate:List())),(or:(urn%3Ali%3AadTargetingFacet%3Atitles:List(),urn%3Ali%3AadTargetingFacet%3Aseniorities:List(),urn%3Ali%3AadTargetingFacet%3AjobFunctions:List())),(or:(urn%3Ali%3AadTargetingFacet%3AfieldsOfStudy:List())),(or:(urn%3Ali%3AadTargetingFacet%3Alocations:List(urn%3Ali%3Ageo%3A103350119))),(or:(urn%3Ali%3AadTargetingFacet%3Aschools:List())),(or:(urn%3Ali%3AadTargetingFacet%3Askills:List())),(or:(urn%3Ali%3AadTargetingFacet%3AyearsOfExperienceRanges:List())))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 1970-01-01
    • 2021-08-25
    • 2012-10-15
    • 2021-04-27
    相关资源
    最近更新 更多