2016-04-27 3 views
-2

Я создал многомерный массив в JavaScript на очень старом проекте, и теперь я перешел от JS и заинтересовался Java. Я разрабатываю игру LibGDX, и мне нужен этот массив в формате java, но я не уверен, как это сделать.Преобразование этого массива javascript в java

var merchants = [{ 
    name : 'Weapons Merchant', 
    items : [ 
    {type: "weapon", cost: 250, name: "Claymore"}, 
    {type: "weapon", cost: 75, name: "Dagger"}, 
    {type: "weapon", cost: 350, name: "Magic Staff"}, 
    {type: "weapon", cost: 150, name: "Sword"}, 
    {type: "weapon", cost: 125, name: "Bow"}, 
    {type: "weapon", cost: 125, name: "Crossbow"}, 
    {type: "weapon", cost: 5, name: "Arrow"}, 
    {type: "weapon", cost: 15, name: "Bolt"} 
    ] 
}, { 
    name : 'Armor Merchant', 
    items : [ 
    {type: "clothing", slot: "head",  name: "Helmet"}, 
    {type: "clothing", slot: "head",  name: "Hood"}, 
    {type: "clothing", slot: "chest", name: "Chestplate"}, 
    {type: "clothing", slot: "chest", name: "Tunic"}, 
    {type: "clothing", slot: "chest", name: "Robe"}, 
    {type: "clothing", slot: "leggings", name: "Legplates"}, 
    {type: "clothing", slot: "leggings", name: "Leggings"}, 
    {type: "clothing", slot: "leggings", name: "Undergarments"}, 
    {type: "clothing", slot: "feet",  name: "Boots"}, 
    {type: "clothing", slot: "feet",  name: "Armored Boots"} 
    ] 
}, { 
    name: 'Material Merchant', 
    items: [ 
    {type: "material", name: "Leather", cost: 25}, 
    {type: "material", name: "Iron", cost: 50}, 
    {type: "material", name: "Steel", cost: 75}, 
    {type: "material", name: "Mythril", cost: 100}, 
    {type: "material", name: "Dragonbone", cost: 200} 
    ] 
}]; 

Как я могу преобразовать это в Java?

Примечание

Из-за ошибки с моим мобильным AIDE, я должен создать 1d массив так:

public static List<CharSequence> intro = new ArrayList<CharSequence>(); 
intro.add("multiple add statements with strings"); 
final CharSequence[] introItems = intro.toArray(new CharSequence[intro.size()]); 
     return introItems[number]; 

Поскольку он говорит String[][] array = new String[5][5] имеет ошибку «Неожиданный конец декларации» , поэтому я бы предпочел ответить на формат, который я использую, если это возможно.

+0

Проблема в том, что мы не знаем, как вы собираетесь хранить данные. В этом javascript-коде каждый элемент является объектом, который имеет разные атрибуты. Но с Java вы должны создавать классы, которые будут представлять каждый объект. Или, вы могли бы просто сохранить все в Строках. Что вы планируете делать? –

+0

https://github.com/libgdx/libgdx/wiki/Reading-%26-writing-JSON – Xoppa

ответ

1

Если вы можете немного модифицировать данные в чистом JSON, Jackson может это сделать. Я также не знаю, как вы читаете в данных JS/JSON, поэтому я буду считать, что вам удалось получить его хранится в виде строки в коде парсинга:

jsonString

[{ 
    name : 'Weapons Merchant', 
    items : [ 
    {type: "weapon", cost: 250, name: "Claymore"}, 
    {type: "weapon", cost: 75, name: "Dagger"}, 
    {type: "weapon", cost: 350, name: "Magic Staff"}, 
    {type: "weapon", cost: 150, name: "Sword"}, 
    {type: "weapon", cost: 125, name: "Bow"}, 
    {type: "weapon", cost: 125, name: "Crossbow"}, 
    {type: "weapon", cost: 5, name: "Arrow"}, 
    {type: "weapon", cost: 15, name: "Bolt"} 
    ] 
}, { 
    name : 'Armor Merchant', 
    items : [ 
    {type: "clothing", slot: "head",  name: "Helmet"}, 
    {type: "clothing", slot: "head",  name: "Hood"}, 
    {type: "clothing", slot: "chest", name: "Chestplate"}, 
    {type: "clothing", slot: "chest", name: "Tunic"}, 
    {type: "clothing", slot: "chest", name: "Robe"}, 
    {type: "clothing", slot: "leggings", name: "Legplates"}, 
    {type: "clothing", slot: "leggings", name: "Leggings"}, 
    {type: "clothing", slot: "leggings", name: "Undergarments"}, 
    {type: "clothing", slot: "feet",  name: "Boots"}, 
    {type: "clothing", slot: "feet",  name: "Armored Boots"} 
    ] 
}, { 
    name: 'Material Merchant', 
    items: [ 
    {type: "material", name: "Leather", cost: 25}, 
    {type: "material", name: "Iron", cost: 50}, 
    {type: "material", name: "Steel", cost: 75}, 
    {type: "material", name: "Mythril", cost: 100}, 
    {type: "material", name: "Dragonbone", cost: 200} 
    ] 
}] 

Merchant.Java

public class Merchant { 
    private String name; 
    private List<Item> items; 
    /* Getters/Setters */ 
} 

Item.Java

public class Item { 
    private String name; 
    private String type; 
    private String slot; 
    private int cost; 
    /* Getters/Setters */ 
} 

Синтаксический Код

// Read in the String using whatever means is appropriate. 
String jsonString = ...; 

// Parse using Jackson 
ObjectMapper mapper = new ObjectMapper(); 
List<Merchant> list = Arrays.asList(mapper.readValue(
    jsonString, 
    Merchant[].class 
); 

Если вы хотите, чтобы данные, оставленные в виде массива, просто оставить из Arrays.asList() вызов.

Если вы не можете изменить код JSON, вы можете использовать Rhino для анализа старого JS-кода.

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