2014-02-05 2 views
1

Есть ли у кого-нибудь образец Groovy-кода для преобразования JSON-документа в CSV-файл? Я пытался искать в Google, но безрезультатно.Код Groovy для преобразования json в CSV-файл

Пример входных данных (от комментариев):

[ company_id: '1', 
    web_address: 'vodafone.com/', 
    phone: '+44 11111', 
    fax: '', 
    email: '', 
    addresses: [ 
     [ type: "office", 
     street_address: "Vodafone House, The Connection", 
     zip_code: "RG14 2FN", 
     geo: [ lat: 51.4145, lng: 1.318385 ] ] 
    ], 
    number_of_employees: 91272, 
    naics: [ 
     primary: [ 
      "517210": "Wireless Telecommunications Carriers (except Satellite)" ], 
     secondary: [ 
      "517110": "Wired Telecommunications Carriers", 
      "517919": "Internet Service Providers", 
      "518210": "Web Hosting" 
     ] 
    ] 

Более подробную информацию от редактирования:

def export(){ 
    def exportCsv = [ [ id:'1', color:'red', planet:'mars', description:'Mars, the "red" planet'], 
        [ id:'2', color:'green', planet:'neptune', description:'Neptune, the "green" planet'], 
        [ id:'3', color:'blue', planet:'earth', description:'Earth, the "blue" planet'], 
        ] 
    def out = new File('/home/mandeep/groovy/workspace/FirstGroovyProject/src/test.csv') 
    exportCsv.each { 
     def row = [it.id, it.color, it.planet,it.description] 
     out.append row.join(',') 
     out.append '\n' 
    } 
    return out 
} 
+0

Это было бы на заказ для вашего json, поскольку нет спецификации того, что объекты в массиве json должны содержать те же свойства. У вас есть пример json? Что вы пробовали? Какая у вас сложность? –

+0

У меня есть данные String JSON. Я хочу преобразовать эти данные json в файл csv, используя код groovy. как здесь я создал файл csv со статическими данными, но я хочу создать файл csv из объекта string json и хочу отправить этот файл csv в виде вложения, используя код отправки электронной почты в groovy –

+0

В вашем вопросе очевидно, что у вас есть Json и хотите создать CSV, но какой у вас JSON? Любое решение будет уникальным для вашего json, так как Json может принимать формы и не должен легко соответствовать формату csv. Можете ли вы опубликовать какой-то пример Json в свой вопрос в качестве редактирования? –

ответ

5

Хорошо, как это:

import groovy.json.* 

// Added extra fields and types for testing  
def js = '''{"infile": [{"field1": 11,"field2": 12,     "field3": 13}, 
         {"field1": 21,    "field4": "dave","field3": 23}, 
         {"field1": 31,"field2": 32,     "field3": 33}]}''' 


def data = new JsonSlurper().parseText(js) 
def columns = data.infile*.keySet().flatten().unique() 

// Wrap strings in double quotes, and remove nulls 
def encode = { e -> e == null ? '' : e instanceof String ? /"$e"/ : "$e" } 

// Print all the column names 
println columns.collect { c -> encode(c) }.join(',') 

// Then create all the rows 
println data.infile.collect { row -> 
    // A row at a time 
    columns.collect { colName -> encode(row[ colName ]) }.join(',') 
}.join('\n') 

Это печатает:

"field3","field2","field1","field4" 
13,12,11, 
23,,21,"dave" 
33,32,31, 

Что выглядит правильно для меня

Смежные вопросы