JSON数组结构变体

时间:2013-01-02 22:27:23

标签: json

以下是3种JSON数组结构格式......

第一个,JSON.org上概述的那个,是我熟悉的那个:

格式#1

{"People": [
  {
    "name": "Sally",
    "age": "10"
  },
  {
    "name": "Greg",
    "age": "10"
  }
]}

第二个是略微变化,它命名数组的元素。我个人并不关心它;你没有在代码中命名数组的元素(它们是通过索引访问的),为什么要用JSON命名它们?

格式#2

{"People": [
  "Person1": {
    "name": "Sally",
    "age": "10"
  },
  "Person2": {
    "name": "Greg",
    "age": "10"
  }
]}

最后一个是另一种变体,非常类似于格式#2 ,但我有一个预感,这个是不正确的,因为它似乎有一些额外的花括号,而不属于它们。

格式#3

{"People": [
  {
    "Person1": {
      "name": "Sally",
      "age": "10"
    }
  },
  {
    "Person2": {
      "name": "Greg",
      "age": "10"
    }
  }
]}

同样,我确信格式#1 是有效的,因为它是JSON.org中概述的JSON数组格式。但是,格式#2 格式#3 呢?那些被认为是有效的JSON吗?如果是,那些格式来自哪里?我没有在JSON.org或维基百科上看到它们。

2 个答案:

答案 0 :(得分:7)

#1和#3都是(几乎 - 有逗号丢失)有效的JSON,但编码不同的结构:

  • #1为您提供了数组 对象,每个对象,每个都有名称和年龄字符串属性
  • #3为您提供对象数组,每个对象属性,每个都有名称和年龄字符串属性即可。

#2无效:数组(由[ ... ]定义)可能不包含属性名称。

答案 1 :(得分:1)

格式#1 的解决方案 默认情况下:

final void tabledata(){

int rows=jt.getRowCount();
int colms=jt.getColumnCount();
int bpss=0,spss=0;

for(int i=0;i<colms;i++){
for(int j=0;j<rows;j++) {
if(i==0){
    String qtys= jt.getValueAt(j,i).toString();
    int qtyss=Integer.parseInt(qtys);
    System.out.print(qtyss);
    try{stmt.execute("INSERT INTO ITEMS(QTY) VALUES("+qtyss+")");}
    catch (SQLException ex) {ex.printStackTrace();}
}else{ 
if(i==1){

    String codes= jt.getValueAt(j,i).toString();
    int codess=Integer.parseInt(codes);
    System.out.print(codess);
    try{stmt.execute("INSERT INTO ITEMS(CODE) VALUES("+codess+")");}
    catch (SQLException ex) {ex.printStackTrace();}
    } else{ 
if(i==2){

    String names=jt.getValueAt(j,i).toString();
    System.out.print(names);
    try{stmt.execute("INSERT INTO ITEMS(NAME) VALUES('"+names+"')");}
    catch (SQLException ex) {ex.printStackTrace();}
    } else{ 
if(i==3){

   String bps= jt.getValueAt(j,i).toString();
   bpss=Integer.parseInt(bps);
   System.out.print(bpss);
   try{stmt.execute("INSERT INTO ITEMS(BUYPRICE) VALUES("+bpss+")");}
    catch (SQLException ex) {ex.printStackTrace();}
    } else{ 
if(i==4){

   String sps= jt.getValueAt(j,i).toString();
   spss=Integer.parseInt(sps);
   System.out.print(spss);
   try{stmt.execute("INSERT INTO ITEMS(SELLPRICE) VALUES("+spss+")");}
    catch (SQLException ex) {ex.printStackTrace();}
    }}}}}}}

JSON代码:

array=[];
object={};

JSON结果:

var Json = { People:[] }; Json.People.push({ "name": "Sally", "age": "10" }); Json.People.push({ "name": "Greg", "age": "10" });