Android Question Json to Map Compile Error

junaidahmed

Well-Known Member
Licensed User
Longtime User
I have write a Program to get Data from Json and bind it to Map,but its show an compile Error Message.Please check below Error Log and my source code..

Logger connected to: Xiaomi Redmi Note 4
--------- beginning of main
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
Error occurred on line: 151 (Main)
java.lang.RuntimeException: JSON Object expected.
at anywheresoftware.b4a.objects.collections.JSONParser.NextObject(JSONParser.java:50)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
at anywheresoftware.b4a.BA$2.run(BA.java:360)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6342)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
** Activity (main) Create, isFirst = true **
** Activity (main) Resume **
*** Service (httputils2service) Create ***
** Service (httputils2service) Start **
Error occurred on line: 152 (Main)
java.lang.RuntimeException: JSON Object expected.
at anywheresoftware.b4a.objects.collections.JSONParser.NextObject(JSONParser.java:50)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:710)
at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:249)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:139)
at anywheresoftware.b4a.BA$2.run(BA.java:360)
at android.os.Handler.handleCallback(Handler.java:754)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6342)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
B4X:
Sub Activity_Create(FirstTime As Boolean)
    'Do not forget to load the layout file created with the visual designer. For example:
    Activity.LoadLayout("b4a4lay1")
        
    GetQuery("Select Serial,Stage from Arind.Dbo.Stages")
    
End Sub

Sub GetQuery(Query As String)
            
    Dim job1 As HttpJob
    job1.Initialize("Job1", Me)
    job1.PostString("http://192.168.1.6:85/Android/FrmGetQuery.aspx?Query="&Query,"")
    ProgressDialogShow("Calling KHARIND server...")
    
End Sub

Sub JobDone (Job As HttpJob)
    
    If Job.Success Then
        If (Job.JobName = "Job1") Then
            Dim JSON As JSONParser
            Dim Map1 As Map
            JSON.Initialize(Job.GetString()) 'Read the text from a file.
            Map1.Initialize
            Map1 = JSON.NextObject
            
        End If
    End If
    
End Sub
 

junaidahmed

Well-Known Member
Licensed User
Longtime User
Also check my Json "Data"

[{"Serial":10,"Stage":"Cutting In"},{"Serial":20,"Stage":"Cutting Out"},{"Serial":30,"Stage":"Marking Out"},{"Serial":35,"Stage":"Spray In"},{"Serial":40,"Stage":"Spray Out"},{"Serial":45,"Stage":"Slitting In"},{"Serial":50,"Stage":"Slitting Out"},{"Serial":60,"Stage":"Applique Out"},{"Serial":65,"Stage":"Cutting QC In"},{"Serial":70,"Stage":"Cutting QC Out"},{"Serial":80,"Stage":"PreSewing In"},{"Serial":90,"Stage":"PreSewingOut"},{"Serial":95,"Stage":"Pre Sewing QC Out"},{"Serial":100,"Stage":"Sewing TFC In"},{"Serial":110,"Stage":"Sewing TFC Out"},{"Serial":115,"Stage":"Insert Lining In"},{"Serial":120,"Stage":"Insert Lining Out"},{"Serial":130,"Stage":"Finger Tacking Out"},{"Serial":140,"Stage":"Lining QC Out"},{"Serial":145,"Stage":"Accessory Attachments"},{"Serial":150,"Stage":"Hemming In"},{"Serial":160,"Stage":"Hemming Out"},{"Serial":165,"Stage":"Pre Laying QC Out"},{"Serial":170,"Stage":"Semi Finish Out"},{"Serial":175,"Stage":"Final QA In"},{"Serial":180,"Stage":"Final QA Out"},{"Serial":185,"Stage":"Quality Control In"},{"Serial":190,"Stage":"Quality Control Out"},{"Serial":195,"Stage":"Bundling In"},{"Serial":200,"Stage":"Bundling Out"}]
 
Upvote 0

DonManfred

Expert
Licensed User
Longtime User
Use the JSON Tool if you are not able to build the code by yourself correctly!!!

B4X:
Dim parser As JSONParser
parser.Initialize(<text>)
Dim root As List = parser.NextArray
For Each colroot As Map In root
 Dim Serial As Int = colroot.Get("Serial")
 Dim Stage As String = colroot.Get("Stage")
Next
 
Upvote 0
Cookies are required to use this site. You must accept them to continue using the site. Learn more…