Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmagania z jsonem


Rekomendowane odpowiedzi

Opublikowano

Mam taki kod w pliku .json:

 

[
{
"type":"home",
"number":"(800) 111-1111"
},
{
"type":"cell",
"number":"(800) 222-2222"
}
]
Wycinek kodu java:

 

 

JSONArray jsonMainArr = new JSONArray(json);
            for (int i = 0; i < jsonMainArr.length(); i++) {  // **line 2**
                JSONObject childJSONObject = jsonMainArr.getJSONObject(i);
                String name = childJSONObject.getString("type");
                String age     = childJSONObject.getString("number");
                System.out.print(name + "     " + age);
            }
json to String z całym tekstem o zawartości:

[{"type":"home","number":"(800) 111-1111"},{"type":"cell","number":"(800) 222-2222"}]
 

błąd:

Exception in thread "AWT-EventQueue-0" org.json.JSONException: A JSONArray text must start with '[' at 1 [character 2 line 1]
	at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
	at org.json.JSONArray.<init>(JSONArray.java:105)
	at org.json.JSONArray.<init>(JSONArray.java:144)
	at pixelserv.PixelServ.jButton1ActionPerformed(PixelServ.java:227)
	at pixelserv.PixelServ.access$100(PixelServ.java:23)
	at pixelserv.PixelServ$2.actionPerformed(PixelServ.java:74)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6516)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
	at java.awt.Component.processEvent(Component.java:6281)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4872)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4698)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4698)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:694)
	at java.awt.EventQueue$3.run(EventQueue.java:692)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:708)
	at java.awt.EventQueue$4.run(EventQueue.java:706)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Już nie mam siły do tego :/
Opublikowano

Lel deklu twój "[" to nie "[" inny numerek ma, ale tak samo wyglada.

2014-05-18_23-24-40.png

LOL to żeś rozjebał system. Jakim cudem żeś tak to pokiepcił.

Opublikowano

Lel deklu twój "[" to nie "[" inny numerek ma, ale tak samo wyglada.

 

2014-05-18_23-24-40.png

 

LOL to żeś rozjebał system. Jakim cudem żeś tak to pokiepcił.

Dzięki tobie uświadomilem sobie gdzie jest błąd :D

 

Teraz inny problem:

dodałem:

            json = "[\n" +
" {\n" +
"\"type\":\"home\",\n" +
"\"number\":\"(800) 111-1111\"\n" +
"},\n" +
"{\n" +
"\"type\":\"cell\",\n" +
"\"number\":\"(800) 222-2222\"\n" +
"}\n" +
]";

I teraz wszystko dziala więc wina leży po stronie pobierania treści pliku do zmiennej

 

 

Mój kod:

            url = new URL(a);
            URLConnection conn = url.openConnection();

            // open the stream and put it into BufferedReader
            BufferedReader br = new BufferedReader(
                               new InputStreamReader(conn.getInputStream()));

            String inputLine;
            String json = "";
            while ((inputLine = br.readLine()) != null) {
                    json += inputLine;
            }
            br.close();

W zmiennej a jest link do pliku .json na stronie www

 

 

 

 

 

 

 

 

 

 

EDIT

 

Działa

Dla innych zmieniłem pobieranie z internetu na to:

in = new URL( "link" ).openStream();
                json = IOUtils.toString( in, "UTF-8");

i zapisałem z takim samym kodowaniem :D

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...