首页 新闻 会员 周边 捐助

使用js转换json格式的问题

0
悬赏园豆:20 [已解决问题] 解决于 2018-12-01 02:03

有这样一个json,

{
"family[0].FamilyName": "第一个",
"family[0].Sex": "1",
"family[1].FamilyName": "第二个",
"family[1].Sex": "1",
}

现在想转换成以下格式

[
{
"FamilyName": "第一个",
"sex": "1"
},
{
"FamilyName": "第二个",
"sex": "1"
}
]

请大神给说下怎么写白

代码小六的主页 代码小六 | 初学一级 | 园豆:12
提问于:2017-12-18 13:46
< >
分享
最佳答案
0

我来分析一下:

目标,这是把一个json转换成一个List<Persion>。

如果描述方式是作者描述的那样可以由以下几步来处理:

1,解析整个json成key,value的形式。

2,再根据key的字串的数值来设置List的实现类。

你先写一下,我等一下再粘代码。

收获园豆:20
David5201 | 小虾三级 |园豆:534 | 2017-12-18 14:10

我 明白这个意思,可是我不知道应该拆分合并。

代码小六 | 园豆:12 (初学一级) | 2017-12-18 14:53

@代码小六: 我随便写了一代java的实现。应该还有好的方法。是用gson实现的。

<dependency>
       <groupId>com.google.code.gson</groupId>
       <artifactId>gson</artifactId>
      <version>2.8.2</version>
 </dependency>

以上是我引用gson的包。

public class App 
{
    public static void main( String[] args )
    {
        
        String str="{\"family[0].FamilyName\": \"第一个\",\"family[0].Sex\": \"1\",\"family[1].FamilyName\": \"第二个\",\"family[1].Sex\": \"1\"}";
        JsonParser parse =new JsonParser();  //创建json解析器
        JsonObject json=(JsonObject)parse.parse(str); //创建jsonObject对象

        Iterator<String> it = json.keySet().iterator();
        List<JsonObject> lst = new ArrayList<JsonObject>();
        JsonObject jo= new JsonObject(); 
        while(it.hasNext()){
            String key = it.next();
            String value = json.get(key).getAsString();
            if(key.contains("FamilyName")){
                jo.addProperty("FamilyName", value);
            }else{
                jo.addProperty("sex", value);
                lst.add(jo);
                jo = new JsonObject();
            }
        }
        
        System.out.println(lst.toString());

以上是代码。

得到以下运行结果:

[{"FamilyName":"第一个","sex":"1"}, {"FamilyName":"第二个","sex":"1"}]

David5201 | 园豆:534 (小虾三级) | 2017-12-18 23:30
其他回答(1)
0
       var _arry = new Array();
        var n = {};
        n.FamilyName = "第一个";
        n.Sex = 1;
        _arry.push(n);

        n = {};
        n.FamilyName = "第二个";
        n.Sex = 2;
        _arry.push(n);
        console.log(_arry);
        console.log(JSON.stringify(_arry));
//谷歌F12 Console里直接粘贴这段代码运行即可,自己要用的话,得引用一个Jquery的版本。代码才生效。这才是正确的姿势。也是最舒服的姿势。你的这样的Json{
"family[0].FamilyName": "第一个",
"family[0].Sex": "1",
"family[1].FamilyName": "第二个",
"family[1].Sex": "1",
}只能是一个Object去转换,然后再进行拆分。再转换成Json。
大楚打码人 | 园豆:4313 (老鸟四级) | 2017-12-18 14:09

 呵呵,正确的姿势与舒服的姿势!!

支持(0) 反对(0) David5201 | 园豆:534 (小虾三级) | 2017-12-18 14:43

应该怎样去转换呢,我没有发现可行的规律

支持(0) 反对(0) 代码小六 | 园豆:12 (初学一级) | 2017-12-18 14:53

@代码小六: 我的建议是你这段Json最好按照有规律的存储,存储好的对象应该是一个Array.array的里面存放的是object 。这样去转换成你想要的Json才是可行的方式。有时候改变一下原始数据的结构,也是一种可行的方式。

{
"family[0].FamilyName": "第一个",
"family[0].Sex": "1",
"family[1].FamilyName": "第二个",
"family[1].Sex": "1",
}

你的这个只能转换成Object的Json,如果想转换成你想要的Json,你得自己想办法去拆分。如果你把这个JSon改成我这样的形式

var _arry = new Array(); var n = {};

n.FamilyName = "第一个";

n.Sex = 1;

_arry.push(n);

n = {};

n.FamilyName = "第二个";

n.Sex = 2;

_arry.push(n);

JSON.stringify(_arry);这个就是你要的Json格式了!

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2017-12-18 15:02

@贫民窟大侠: 是呀 我现在就是要做这一步操作,就是怎么拆分,我想不出来

支持(0) 反对(0) 代码小六 | 园豆:12 (初学一级) | 2017-12-18 15:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册