首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用java将yaml字符串转换为json字符串

无法使用java将yaml字符串转换为json字符串
EN

Stack Overflow用户
提问于 2015-06-18 09:00:23
回答 2查看 1.6K关注 0票数 2

我想通过使用"jyaml“将yaml字符串转换为json字符串,请有人帮助我解决这个问题。

YAML字符串:-

代码语言:javascript
复制
Korea:   www.gozoculture.com:     default: jhfjfjfj  www.5plus5.gov.mt:     default: jhfjfjfj  www.ces.gov.mt:     default: cesDefault    user5: chennal5  isp:     Tata DoCoMo: chennalisp1    Hathway: chennalIsp    Hong Kong: chennalisp2    Aircel: chennalIspaircel    Airtel: chennalIspAirtel  studiodefault: KoreaStudioDefault  www.wwe.com:     default: wweDefault    user2: chennal2    user1: chennal1  country:     FR: francecountryChennal    HK: HongkongCountryChennal    IN: IndaiChennal    DE: GermanyCountryChennal

我的预期产出:-

代码语言:javascript
复制
{
  "Singapoor": {
    "studiodefault": "chennal default singapoor site", 
    "www.gozoculture.com": {
      "default": "chennalDefault1", 
      "user1": "ch1,ch2,ch3"
    }, 
    "country": {
      "FR": "franceChennal", 
      "DE": "GermanyChennal", 
      "IN": "indiaChennal"
    }, 
    "www.justice.gov.mt": {
      "default": "justiceDefault"
    }, 
    "www.wwe.com": {
      "default": "wwechennalDefault", 
      "user2": "ch4,ch5,ch6"
    }, 
    "isp": {
      "Vodafone  Broadband": "vodafoneChennal2", 
      "Idea cellular": "ideaChennal", 
      "Airtel": "aritelChennal1"
    }, 
    "www.enemalta.com": {
      "default": "chennalDefault2", 
      "user3": "ch7,ch8,ch9"
    }
  }
}

java代码:-

代码语言:javascript
复制
private static String convertToJson(String yamlString) {
    Yaml yaml= new Yaml();
    Map<String,Object> map= (Map<String, Object>) yaml.load(yamlString);

    JSONObject jsonObject=new JSONObject(map);
    return jsonObject.toString();
}

我所得到的输出:-

代码语言:javascript
复制
"Korea":   "www.gozoculture.com:     default: jhfjfjfj  www.5plus5.gov.mt:     default: jhfjfjfj  www.ces.gov.mt:     default: cesDefault    user5: chennal5  isp:     Tata DoCoMo: chennalisp1    Hathway: chennalIsp    Hong Kong: chennalisp2    Aircel: chennalIspaircel    Airtel: chennalIspAirtel  studiodefault: KoreaStudioDefault  www.wwe.com:     default: wweDefault    user2: chennal2    user1: chennal1  country:     FR: francecountryChennal    HK: HongkongCountryChennal    IN: IndaiChennal    DE: GermanyCountryChennal"

我的替代yaml输入文件:-

代码语言:javascript
复制
Singapoor: 
  www.gozoculture.com: 
    default: chennalDefault1
    user1: ch1,ch2,ch3
  isp: 
    Airtel: aritelChennal1
    Vodafone  Broadband: vodafoneChennal2
    Idea cellular: ideaChennal
  www.enemalta.com: 
    default: chennalDefault2
    user3: ch7,ch8,ch9
  www.justice.gov.mt: 
    default: justiceDefault
  studiodefault: chennal default singapoor site
  www.wwe.com: 
    default: wwechennalDefault
    user2: ch4,ch5,ch6
  country: 
    FR: franceChennal
    IN: indiaChennal
    DE: GermanyChennal

当我试图上传具有"user2: ch4,ch5,ch6“等多个值的单键时。对于这种情况,我的代码不起作用。我得到了一个例外:

代码语言:javascript
复制
Jun 18, 2015 5:29:23 PM com.sun.jersey.spi.container.ContainerResponse logException
SEVERE: Mapped exception to response: 500 (Internal Server Error)
javax.ws.rs.WebApplicationException: org.ho.yaml.exception.YamlException: Error near line 4: Unterminated inline value
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-18 10:23:09

缩进对于yaml文件至关重要。如果您的yaml文件与问题相同,则输出是完全正确的。为了实现预期的json,首先必须修复yaml文件。

为了获得预期的json输出,您的yaml文件应该如下所示。

代码语言:javascript
复制
Singapoor: 
    studiodefault: "chennal default singapoor site"
    www.gozoculture.com: 
      default: "chennalDefault1"
      user1: "ch1,ch2,ch3"
    country: 
      FR: "franceChennal"
      DE: "GermanyChennal"
      IN: "indiaChennal"
    www.justice.gov.mt: 
      default: "justiceDefault"
    www.wwe.com: 
      default: "wwechennalDefault"
      user2: "ch4,ch5,ch6"
    isp: 
      Vodafone  Broadband: "vodafoneChennal2"
      Idea cellular: "ideaChennal"
      Airtel: "aritelChennal1"
    www.enemalta.com: 
      default: "chennalDefault2"
      user3: "ch7,ch8,ch9"
票数 2
EN

Stack Overflow用户

发布于 2015-06-18 12:21:10

得到蛇形的http://www.java2s.com/Code/Jar/s/Downloadsnakeyaml15sourcesjar.htm,它可能是为you.it工作,是为我工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30910876

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档